7

Sto cercando di usare futuresimple's FloatingActionButton library di utilizzare una FloatingActionMenu all'interno di una CoordinatorLayout così quando visualizzo un Snackbar FAB si muoverà su e non può essere nascosta dalla Snackbar. Il FloatingActionMenu funziona perfettamente anche se ho notato che la libreria di terze parti non funziona all'interno dello CoordinatorLayout.Terzi FloatingActionButton Biblioteca in CoordinatorLayout

Quando utilizzo la libreria di supporto FAB di Google, lo CoordinatorLayout funziona come previsto, sebbene la libreria di FutureSimple non lo sia. (È nascosto dal Snackbar).

Come posso far funzionare la libreria di terze parti con lo CoordinatorLayout?

fragment_comic.xml

<RelativeLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
<TextView 
    android:id="@+id/title" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center_horizontal" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:text="@string/default_title" 
    android:textAppearance="?android:textAppearanceLarge" 
    android:layout_centerHorizontal="true" /> 

<TextView 
    android:id="@+id/alt" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/title" 
    android:layout_centerHorizontal="true" 
    android:layout_gravity="center_horizontal" 
    android:fadeScrollbars="false" 
    android:gravity="center" 
    android:maxLines="4" 
    android:textColor="@color/black" 
    android:paddingBottom="13dp" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:scrollbars="vertical" 
    android:text="@string/default_alt" 
    android:textAppearance="?android:textAppearanceMedium" /> 

<ImageView 
    android:id="@+id/imageView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_below="@+id/alt" 
    android:adjustViewBounds="false" 
    android:layout_marginBottom="10dp" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:scaleType="fitCenter" /> 


</RelativeLayout> 

<com.getbase.floatingactionbutton.FloatingActionsMenu 
    android:id="@+id/famMain" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    fab:fab_addButtonColorNormal="@color/material_orange" 
    fab:fab_addButtonSize="normal" 
    fab:fab_addButtonStrokeVisible="true" 
    fab:fab_expandDirection="up" 
    android:layout_gravity="bottom|end"> 

<com.getbase.floatingactionbutton.FloatingActionButton 
    android:id="@+id/fab_random" 
    android:src="@drawable/ic_random" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    fab:fab_colorNormal="@color/material_orange" 
    fab:fab_size="mini"/> 

<com.getbase.floatingactionbutton.FloatingActionButton 
    android:id="@+id/fab_download" 
    android:src="@drawable/ic_download" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    fab:fab_colorNormal="@color/material_orange" 
    fab:fab_size="mini"/> 

<com.getbase.floatingactionbutton.FloatingActionButton 
    android:id="@+id/fab_browser" 
    android:src="@drawable/ic_open_browser" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    fab:fab_colorNormal="@color/material_orange" 
    fab:fab_size="mini"/> 

</com.getbase.floatingactionbutton.FloatingActionsMenu> 

poi nella mia classe Java Io inizio la mia FloatingActionsMenu con

FloatingActionsMenu famView = (FloatingActionsMenu) getActivity().findViewById(R.id.famMain); 

poi ho impostato al mio Snackbar con

Snackbar.make(famView, "Hover text copied to clipboard", Snackbar.LENGTH_SHORT).show(); 

risposta

8

Il motivo del Snackbar viene sovrapponendo il FloatingActionMenu è perché si sta impostando che come la vista per lo Snackbar:

Snackbar.make(famView, "Hover text copied to clipboard", Snackbar.LENGTH_SHORT).show(); 

cosa avete veramente bisogno di fare qui è aggiungere un CoordinatorLayout alla parte inferiore del vostro layout che verrà utilizzato per visualizzare lo Snackbar. Puoi impostarlo in modalità LinearLayout in modo che appaia sotto ogni altra cosa. Ecco una versione modificata del vostro XML:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <android.support.design.widget.CoordinatorLayout 
     xmlns:fab="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/coordinatorLayout" 
     android:layout_height="0dp" 
     android:layout_width="match_parent" 
     android:layout_weight="1"> 

     <RelativeLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"> 
      <TextView 
       android:id="@+id/title" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:gravity="center_horizontal" 
       android:paddingLeft="@dimen/activity_horizontal_margin" 
       android:paddingRight="@dimen/activity_horizontal_margin" 
       android:text="Test" 
       android:textAppearance="?android:textAppearanceLarge" 
       android:layout_centerHorizontal="true" /> 

      <TextView 
       android:id="@+id/alt" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_below="@+id/title" 
       android:layout_centerHorizontal="true" 
       android:layout_gravity="center_horizontal" 
       android:fadeScrollbars="false" 
       android:gravity="center" 
       android:maxLines="4" 
       android:textColor="@android:color/black" 
       android:paddingBottom="13dp" 
       android:paddingLeft="@dimen/activity_horizontal_margin" 
       android:paddingRight="@dimen/activity_horizontal_margin" 
       android:scrollbars="vertical" 
       android:text="Test Alt" 
       android:textAppearance="?android:textAppearanceMedium" /> 

      <ImageView 
       android:id="@+id/imageView" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_below="@+id/alt" 
       android:adjustViewBounds="false" 
       android:layout_marginBottom="10dp" 
       android:paddingLeft="@dimen/activity_horizontal_margin" 
       android:paddingRight="@dimen/activity_horizontal_margin" 
       android:scaleType="fitCenter" /> 


     </RelativeLayout> 

     <com.getbase.floatingactionbutton.FloatingActionsMenu 
      android:id="@+id/famMain" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      fab:fab_addButtonColorNormal="@android:color/black" 
      fab:fab_addButtonSize="normal" 
      fab:fab_addButtonStrokeVisible="true" 
      fab:fab_expandDirection="up" 
      android:layout_gravity="bottom|end"> 

      <com.getbase.floatingactionbutton.FloatingActionButton 
       android:id="@+id/fab_random" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       fab:fab_colorNormal="@android:color/black" 
       fab:fab_size="mini"/> 

      <com.getbase.floatingactionbutton.FloatingActionButton 
       android:id="@+id/fab_download" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       fab:fab_colorNormal="@android:color/black" 
       fab:fab_size="mini"/> 

      <com.getbase.floatingactionbutton.FloatingActionButton 
       android:id="@+id/fab_browser" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       fab:fab_colorNormal="@android:color/black" 
       fab:fab_size="mini"/> 

     </com.getbase.floatingactionbutton.FloatingActionsMenu> 

     <android.support.design.widget.FloatingActionButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/testFAB" 
      android:layout_gravity="bottom|start"/> 

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

    <android.support.design.widget.CoordinatorLayout 
     android:id="@+id/snackbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 
</LinearLayout> 

Quindi, è possibile ottenere la vista snackbar in questo modo:

CoordinatorLayout snackbar = (CoordinatorLayout) findViewById(R.id.snackbar); 

e farlo in questo modo:

Snackbar.make(snackbar, "Hover text copied to clipboard", Snackbar.LENGTH_SHORT).show(); 
Problemi correlati