2015-01-16 18 views
7

Infatti, cerco un modo per simulare la posta in arrivo di FAB. Quando l'utente preme il pulsante rosso, dovrebbe apparire una vista opac e un menu. Poiché le immagini sono più più significativo, vedere la seguente immaginePulsante di azione fluttuante e sfondo bianco

enter image description here

so che esiste questa splendida libreria (https://github.com/futuresimple/android-floating-action-button) e con questa libreria, posso visualizzare il menu azione flottante. Ma il mio problema è la visualizzazione dello sfondo bianco (con opacità). Non ho trovato una soluzione per risolvere il mio problema ...

Thx in anticipo

risposta

15

Posizionare il FloatingActionMenu all'interno FrameLayout che sarà in cima ad altre viste e corrisponderà genitore in larghezza e altezza. Utilizza gli stessi margini per sollevare e sfalsare di destra il menu di conseguenza.

Impostare OnFloatingActionsMenuUpdateListener sul menu di azione mobile. Ora cambia/sostituisci il colore di sfondo del layout della cornice all'interno dei metodi:

+2

Sto visualizzando FloatingActionMenu in Fragment e l'utilizzo della soluzione precedente non si sovrappone alla barra delle azioni. Qualche idea su come ottenere la sovrapposizione a schermo intero? –

+1

@PawanKumar Affronterai un problema in Fragment. Una vista sovrapposta tornerà al frammento o sarà in cima a tutto. Anche FAB verrà sovrapposto. Sarà meglio usare FAB in Activity. –

0

Ho raggiunto l'effetto che hai appena citato con il seguente metodo. Ho appena aggiunto una vista dietro il pulsante mobile e sopra gli altri layout e mantieni la visibilità della vista GONE, fino a quando il menu non viene espanso. Quindi ho impostato la visibilità della vista su VISIBLE. E sì, ho impostato lo sfondo della vista su qualsiasi colore opaco che desideri.

Il mio codice

mio file XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:fab="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<TextView 
    android:text="Other View here" 
    android:textSize="50dp" 
    android:layout_centerHorizontal="true" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

<View 
    android:id="@+id/background_dimmer" 
    android:visibility="gone" 
    android:background="#55000000" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

<com.getbase.floatingactionbutton.FloatingActionsMenu 
    android:id="@+id/multiple_actions" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    fab:fab_addButtonColorNormal="@color/white" 
    fab:fab_addButtonColorPressed="@color/white_pressed" 
    fab:fab_addButtonPlusIconColor="@color/half_black" 
    fab:fab_labelStyle="@style/menu_labels_style" 
    android:layout_marginBottom="16dp" 
    android:layout_marginRight="16dp" 
    android:layout_marginEnd="16dp"> 

    <com.getbase.floatingactionbutton.FloatingActionButton 
     android:id="@+id/action_a" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     fab:fab_colorNormal="@color/white" 
     fab:fab_title="Action A" 
     fab:fab_colorPressed="@color/white_pressed"/> 

</com.getbase.floatingactionbutton.FloatingActionsMenu> 

E alla attività o frammento dove i FloatingButtons sono gestite

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

private void setFloatingButtonControls(){ 
    this.bckgroundDimmer = findViewById(R.id.background_dimmer); 
    this.floatingActionsMenu = (FloatingActionsMenu) findViewById(R.id.multiple_actions); 
    this.floatingActionsMenu.setOnFloatingActionsMenuUpdateListener(new FloatingActionsMenu.OnFloatingActionsMenuUpdateListener() { 
     @Override 
     public void onMenuExpanded() { 
      bckgroundDimmer.setVisibility(View.VISIBLE); 
     } 

     @Override 
     public void onMenuCollapsed() { 
      bckgroundDimmer.setVisibility(View.GONE); 
     } 
    }); 
} 

Questo vi darà l'effetto che si voleva. Spero che questo ti aiuti. Mi ha sicuramente aiutato. :)

0

Acquisisci un layout di coordinatore con barra degli strumenti, menu mobile, i contenuti e il layout relativo. Imposta il colore di sfondo del layout relativo su bianco trasparente e imposta la sua visibilità su Via. Imposta il tema "NoActionBar" e utilizza la barra degli strumenti invece della barra delle azioni nell'attività. Ora ogni volta che apri il menu mobile, imposta la visibilità del Layout relativo su visibile e su chiudi torna indietro.

Problemi correlati