2016-01-24 3 views
2

Я пытаюсь получить snackbar ниже 3 вкладок. Я раздул фрагмент и реализовал схему координатора внутри этого. Я не могу отобразить snackbar сверху внизу tabs.And getView() отображает snackbar внизу над плавающей кнопкой, и этот код How to show Snackbar at top of the screen отображает закусочную прямо сверху, которую я не хочу. Как сделать отображение закуски под вкладками в фрагменте?snackbar не отображается поверх макета фрагмента/recyclerview в viewpager

Код:

Snackbar snackbar = Snackbar 
         .make(coordinatorLayout_snackbar, “Snackbar”, Snackbar.LENGTH_INDEFINITE) 
         .setAction(“click”, new View.OnClickListener() { 
          @Override 
          public void onClick(View view) { 
           Log.e(TAG, "button clicked"); 
          } 
         }); 

       snackbar.show(); 

XML:

<?xml version="1.0" encoding="utf-8"?> 


<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:fab="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/frame_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.design.widget.CoordinatorLayout 
     android:id="@+id/coordinatorLayout_snackbar” 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentTop="true"> 
</android.support.design.widget.CoordinatorLayout> 


    <android.support.v4.widget.SwipeRefreshLayout 
     android:id="@+id/swipe_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 


     <android.support.v7.widget.RecyclerView 
      android:id="@+id/recyclerview" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:scrollbars="vertical" /> 
    </android.support.v4.widget.SwipeRefreshLayout> 

</FrameLayout> 

ответ

3

Вам нужно обернуть SwipeRefreshLayout внутри CoordinatorLayout, как это:

<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:fab="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/coordinatorLayout_snackbar” 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.v4.widget.SwipeRefreshLayout 
     android:id="@+id/swipe_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <android.support.v7.widget.RecyclerView 
      android:id="@+id/recyclerview" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:scrollbars="vertical" /> 
    </android.support.v4.widget.SwipeRefreshLayout> 

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

В текущем шаблоне, SwipeRefreshLayout является нарисованный над координаторомLayout, который имеет высоту 0, поскольку он не имеет детей и высоту установлен как wrap_content.

+0

как я могу установить его сверху. В настоящее время он даже не отображается, пока я не прокручу вниз. Он скрыт. – jason

+1

Вы должны поместить CoordinatorLayout в макет Activity, чтобы весь фрагмент содержался в CoordinatorLayout. – patloew

+0

Не объясните, пожалуйста, кодом? Я попробовал, и он все еще показывает ниже макета. – jason

Смежные вопросы