7

Я пытаюсь использовать futuresimple's FloatingActionButton library использовать FloatingActionMenu Внутри CoordinatorLayout поэтому, когда я отображать Snackbar ФАБ будет двигаться вверх и не могут быть скрыты от Snackbar. FloatingActionMenu работает отлично, хотя я заметил, что сторонняя библиотека не работает внутри CoordinatorLayout.Третья партия FloatingActionButton Библиотека в CoordinatorLayout

Когда я пользуюсь библиотекой поддержки FAB из Google, CoordinatorLayout работает как ожидалось, хотя библиотека FutureSimple не является. (Он скрыт Snackbar).

Как я могу заставить стороннюю библиотеку работать с 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> 

то в моем классе Java я начинаю мой FloatingActionsMenu с

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

затем я поставил его в моей закусочной с

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

ответ

8

Причина Snackbar является наложенной на FloatingActionMenu происходит потому, что вы устанавливаете, что, как вид на закусочную:

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

Что вам действительно нужно сделать здесь добавить CoordinatorLayout в нижней части вашего макет, который будет использоваться для отображения Snackbar. Вы можете установить это в стиле LinearLayout, чтобы он отображался ниже всего остального. Вот отредактированная версия вашего 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> 

Затем, вы можете получить представление закусочной вроде этого:

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

И сделать это так:

Snackbar.make(snackbar, "Hover text copied to clipboard", Snackbar.LENGTH_SHORT).show(); 
Смежные вопросы