खोज…


परिचय

फ्लोटिंग एक्शन बटन का उपयोग एक विशेष प्रकार की प्रचारित कार्रवाई के लिए किया जाता है, यह डिफ़ॉल्ट रूप से सामग्री के विस्तार टुकड़े के रूप में स्क्रीन पर एनिमेट करता है। इसके भीतर का आइकन एनिमेटेड हो सकता है, एफएबी उनके सापेक्ष महत्व के कारण अन्य यूआई तत्वों की तुलना में अलग-अलग हो सकता है। फ्लोटिंग एक्शन बटन एक एप्लिकेशन में प्राथमिक कार्रवाई का प्रतिनिधित्व करता है जो बस एक एक्शन को ट्रिगर कर सकता है या कहीं नेविगेट कर सकता है।

पैरामीटर

पैरामीटर विस्तार
android.support.design:elevation एफएबी के लिए उन्नयन मूल्य। एक अन्य संसाधन का संदर्भ हो सकता है, "@ [+] [पैकेज:] टाइप / नाम" या फॉर्म में एक थीम विशेषता के रूप में? [पैकेज:] टाइप / नाम।
android.support.design:fabSize FAB के लिए आकार।
android.support.design:rippleColor FAB के लिए तरंग रंग।
android.support.design:useCompatPadding सक्षम गद्दी सक्षम करें।

टिप्पणियों

फ़्लोटिंग एक्शन बटन एक विशेष प्रकार की प्रचारित कार्रवाई के लिए उपयोग किया जाता है। वे UI के ऊपर तैरते हुए एक चक्करदार आइकन से अलग होते हैं और इसमें मॉर्फिंग, लॉन्चिंग और ट्रांसफरिंग एंकर पॉइंट से संबंधित विशेष गति व्यवहार होते हैं।

सबसे सामान्य क्रिया का प्रतिनिधित्व करने के लिए प्रति स्क्रीन केवल एक फ्लोटिंग एक्शन बटन की सिफारिश की जाती है।

FloatingActionButton का उपयोग करने से पहले आपको build.gradle फ़ाइल में डिज़ाइन समर्थन लाइब्रेरी निर्भरता को जोड़ना होगा:

dependencies {
    compile 'com.android.support:design:25.1.0'
}

आधिकारिक दस्तावेज:

https://developer.android.com/reference/android/support/design/widget/FloatingActionButton.html

सामग्री डिजाइन विनिर्देशों:

https://material.google.com/components/buttons-floating-action-button.html

लेआउट में एफएबी कैसे जोड़ें

फ़्लोटिंगएशनबटन का उपयोग करने के लिए, टिप्पणी अनुभाग में वर्णित build.gradle . build.gradle फ़ाइल में निर्भरता जोड़ें।

फिर लेआउट में जोड़ें:

 <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        android:src="@drawable/my_icon" />

एक उदाहरण:

यहाँ छवि विवरण दर्ज करें

रंग

इस दृश्य की पृष्ठभूमि का रंग आपके विषय के रंग के अनुसार चूक करता है।

उपरोक्त छवि में अगर src केवल + आइकन (डिफ़ॉल्ट रूप से 24x24 dp) को इंगित करता है, तो पूर्ण सर्कल की पृष्ठभूमि का रंग प्राप्त करने के लिए आप app:backgroundTint="@color/your_colour" उपयोग कर सकते हैं app:backgroundTint="@color/your_colour"

यदि आप कोड में रंग बदलना चाहते हैं, तो आप उपयोग कर सकते हैं,

myFab.setBackgroundTintList(ColorStateList.valueOf(your color in int));

यदि आप दबाए गए राज्य उपयोग में FAB का रंग बदलना चाहते हैं

mFab.setRippleColor(your color in int);

पोजिशनिंग

यह मोबाइल पर किनारे से न्यूनतम 16dp और टैबलेट / डेस्कटॉप पर 24dp न्यूनतम रखने की सिफारिश की गई है।

नोट : एक बार जब आप एक src को छोड़कर FloatingActionButton के पूरे क्षेत्र को कवर करते हैं, तो सुनिश्चित करें कि आपके पास सबसे अच्छा परिणाम प्राप्त करने के लिए उस छवि का सही आकार है।

डिफ़ॉल्ट सर्कल का आकार 56 x 56dp है

यहाँ छवि विवरण दर्ज करें

मिनी सर्कल का आकार: 40 x 40dp

यदि आप केवल केवल आंतरिक आइकन को बदलना चाहते हैं तो डिफ़ॉल्ट आकार के लिए 24 x 24dp आइकन का उपयोग करें

स्वाइप पर फ़्लोटिंगएशनबटन दिखाएँ और छिपाएँ

डिफ़ॉल्ट एनीमेशन के साथ एक FloatingActionButton को दिखाने और छिपाने के लिए, बस तरीकों को show() और hide()FloatingActionButton में डालने के बजाय एक्टिविटी लेआउट में FloatingActionButton रखने के लिए यह अच्छा अभ्यास है, यह डिफ़ॉल्ट एनिमेशन को दिखाने और छिपाने के दौरान काम करने की अनुमति देता है।

यहाँ ViewPager साथ एक उदाहरण दिया गया है:

  • तीन टैब्स
  • पहले और तीसरे टैब के लिए FloatingActionButton दिखाएँ
  • मध्य टैब पर FloatingActionButton को छिपाएँ
public class MainActivity extends AppCompatActivity {

    FloatingActionButton fab;
    ViewPager viewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        fab = (FloatingActionButton) findViewById(R.id.fab);
        viewPager = (ViewPager) findViewById(R.id.viewpager);

        // ...... set up ViewPager ............

        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
                if (position == 0) {
                    fab.setImageResource(android.R.drawable.ic_dialog_email);
                    fab.show();
                } else if (position == 2) {
                    fab.setImageResource(android.R.drawable.ic_dialog_map);
                    fab.show();
                } else {
                    fab.hide();
                }
            }

            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}

            @Override
            public void onPageScrollStateChanged(int state) {}
        });

        // Handle the FloatingActionButton click event:
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int position = viewPager.getCurrentItem();
                if (position == 0) {
                    openSend();
                } else if (position == 2) {
                    openMap();
                }
            }
        });

    }
}

परिणाम:

यहाँ छवि विवरण दर्ज करें

स्क्रॉल पर फ़्लोटिंगएशनबटन दिखाएँ और छिपाएँ

समर्थन लाइब्रेरी संस्करण 22.2.1 के साथ शुरू, यह दिखाने के लिए और एक को छिपाने के लिए संभव है FloatingActionButton व्यवहार स्क्रॉल एक का उपयोग करने से FloatingActionButton.Behavior sublclass कि का लाभ लेता है show() और hide() तरीकों।

ध्यान दें कि यह केवल CoordinatorLayout के साथ आंतरिक दृश्यों के संयोजन में काम करता है जो नेस्टेड स्क्रॉलिंग का समर्थन करता है, जैसे कि RecyclerView और NestedScrollView

यह ScrollAwareFABBehavior क्लास ScrollAwareFABBehavior पर एंड्रॉइड गाइड से आता है (सीसी-विकी विडियो के साथ शुरू होता है)

public class ScrollAwareFABBehavior extends FloatingActionButton.Behavior {
    public ScrollAwareFABBehavior(Context context, AttributeSet attrs) {
        super();
    }

    @Override
    public boolean onStartNestedScroll(final CoordinatorLayout coordinatorLayout, final FloatingActionButton child,
                                       final View directTargetChild, final View target, final int nestedScrollAxes) {
        // Ensure we react to vertical scrolling
        return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL
                || super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target, nestedScrollAxes);
    }

    @Override
    public void onNestedScroll(final CoordinatorLayout coordinatorLayout, final FloatingActionButton child,
                               final View target, final int dxConsumed, final int dyConsumed,
                               final int dxUnconsumed, final int dyUnconsumed) {
        super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed);
        if (dyConsumed > 0 && child.getVisibility() == View.VISIBLE) {
            // User scrolled down and the FAB is currently visible -> hide the FAB
            child.hide();
        } else if (dyConsumed < 0 && child.getVisibility() != View.VISIBLE) {
            // User scrolled up and the FAB is currently not visible -> show the FAB
            child.show();
        }
    }
}

FloatingActionButton लेआउट xml में, app:layout_behavior निर्दिष्ट करें app:layout_behavior के पूर्ण-योग्य-वर्ग-नाम के साथ ScrollAwareFABBehavior :

app:layout_behavior="com.example.app.ScrollAwareFABBehavior"

इस लेआउट के उदाहरण के लिए:

<android.support.design.widget.CoordinatorLayout
    android:id="@+id/main_layout"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appBarLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:elevation="6dp">
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:background="?attr/colorPrimary"
            android:minHeight="?attr/actionBarSize"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            app:elevation="0dp"
            app:layout_scrollFlags="scroll|enterAlways"
            />

        <android.support.design.widget.TabLayout
            android:id="@+id/tab_layout"
            app:tabMode="fixed"
            android:layout_below="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?attr/colorPrimary"
            app:elevation="0dp"
            app:tabTextColor="#d3d3d3"
            android:minHeight="?attr/actionBarSize"
            />

    </android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_below="@+id/tab_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        app:layout_behavior="com.example.app.ScrollAwareFABBehavior"
        android:layout_margin="@dimen/fab_margin"
        android:src="@android:drawable/ic_dialog_email" />

</android.support.design.widget.CoordinatorLayout>

यहाँ परिणाम है:

यहाँ छवि विवरण दर्ज करें

फ्लोटिंगएशनबटन का व्यवहार सेट करना

आप XML में FAB का व्यवहार सेट कर सकते हैं।

उदाहरण के लिए:

<android.support.design.widget.FloatingActionButton    
   app:layout_behavior=".MyBehavior" />

या आप प्रोग्राम का उपयोग करके सेट कर सकते हैं:

CoordinatorLayout.LayoutParams p = (CoordinatorLayout.LayoutParams) fab.getLayoutParams();
p.setBehavior(xxxx);
fab.setLayoutParams(p);


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow