Ricerca…


introduzione

Il pulsante di azione mobile viene utilizzato per un tipo speciale di azione promossa, che si anima sullo schermo come un pezzo di materiale in espansione, per impostazione predefinita. L'icona al suo interno può essere animata, inoltre FAB può spostarsi in modo diverso rispetto ad altri elementi dell'interfaccia utente a causa della loro importanza relativa. Un pulsante di azione mobile rappresenta l'azione principale in un'applicazione che può semplicemente attivare un'azione o navigare da qualche parte.

Parametri

Parametro Dettaglio
android.support.design:elevation Valore di elevazione per il FAB. Può essere un riferimento a un'altra risorsa, nella forma "@ [+] [pacchetto:] tipo / nome" o un attributo tema nel modulo "? [Pacchetto:] tipo / nome".
android.support.design:fabSize Dimensioni per il FAB.
android.support.design:rippleColor Ripple color per il FAB.
android.support.design:useCompatPadding Abilita riempimento compatto.

Osservazioni

I pulsanti di azione mobili vengono utilizzati per un tipo speciale di azione promossa. Sono caratterizzati da un'icona circolare che galleggia sopra l'interfaccia utente e presentano comportamenti di movimento speciali correlati al morphing, al lancio e al punto di ancoraggio di trasferimento.

È consigliato un solo pulsante di azione mobile per schermata per rappresentare l'azione più comune.

Prima di utilizzare FloatingActionButton è necessario aggiungere la dipendenza della libreria del supporto di progettazione nel file build.gradle :

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

Documentazione ufficiale:

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

Specifiche di progettazione materiale:

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

Come aggiungere il FAB al layout

Per usare un FloatingActionButton basta aggiungere la dipendenza nel file build.gradle come descritto nella sezione commenti.

Quindi aggiungi al layout:

 <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" />

Un esempio:

inserisci la descrizione dell'immagine qui

Colore

Il colore di sfondo di questa vista è impostato su colorAccent del tema.

Nell'immagine sopra se l' src punta solo a + icona (di default 24x24 dp), per ottenere il colore di sfondo della circonferenza completa puoi usare app:backgroundTint="@color/your_colour"

Se desideri cambiare il colore nel codice puoi usare,

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

Se si desidera modificare il colore di FAB in uso stato premuto

mFab.setRippleColor(your color in int);

Posizionamento

Si consiglia di posizionare minimo di 16 dp dal bordo sul cellulare e minimo di 24 dp su tablet / desktop.

Nota : una volta impostato un src eccetto per coprire l'intera area di FloatingActionButton assicurati di avere la giusta dimensione di quell'immagine per ottenere il miglior risultato.

La dimensione del cerchio predefinita è 56 x 56 dp

inserisci la descrizione dell'immagine qui

Dimensioni minime cerchio: 40 x 40 dpi

Se si desidera modificare solo l'icona Interno, utilizzare l'icona 24 x 24 dpi per la dimensione predefinita

Mostra e Nascondi FloatingActionButton su Swipe

Per mostrare e nascondere un oggetto FloatingActionButton con l'animazione predefinita, basta chiamare i metodi show() e hide() . È buona prassi mantenere un oggetto FloatingActionButton nel layout di attività invece di inserirlo in un frammento, questo consente alle animazioni predefinite di funzionare quando vengono mostrate e nascoste.

Ecco un esempio con ViewPager :

  • Tre schede
  • Mostra FloatingActionButton per la prima e terza scheda
  • Nascondi il FloatingActionButton nella scheda centrale
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();
                }
            }
        });

    }
}

Risultato:

inserisci la descrizione dell'immagine qui

Mostra e nasconde FloatingActionButton su Scroll

A partire dalla Libreria di supporto versione 22.2.1, è possibile mostrare e nascondere un FloatingActionButton dal comportamento di scorrimento usando una sottoclasse FloatingActionButton.Behavior che sfrutta i metodi show() e hide() .

Si noti che questo funziona solo con un CoordinatorLayout in combinazione con le viste interne che supportano lo scorrimento annidato, come RecyclerView e NestedScrollView .

Questa classe ScrollAwareFABBehavior proviene dalle guide Android su Codepath (cc-wiki con attribuzione richiesta)

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();
        }
    }
}

Nel file di layout FloatingActionButton xml, specifica l' app:layout_behavior con il nome di classe ScrollAwareFABBehavior di ScrollAwareFABBehavior :

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

Ad esempio con questo layout:

<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>

Ecco il risultato:

inserisci la descrizione dell'immagine qui

Impostazione del comportamento di FloatingActionButton

È possibile impostare il comportamento del FAB in XML.

Per esempio:

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

Oppure puoi impostare a livello di codice usando:

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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow