8

Я пытаюсь использовать макет координатора с макетом панели приложения, в котором размещен фрагмент как «прокручиваемый вид». Фрагмент состоит из recyclerView и расположение нижней выровнены удерживая кнопку, например, так:Как использовать расположение координатора с фрагментом как «просмотр прокрутки»

enter image description here

Однако нижняя часть скрыта по умолчанию:

enter image description here

и показывает только после прокрутки.

Из моего класса деятельности: макет

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

    TestFragment fragment = (TestFragment) getFragmentManager().findFragmentByTag("Test"); 
    if (fragment == null) 
     fragment = new TestFragment(); 

    getFragmentManager().popBackStack(); 

    FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); 

    fragmentTransaction.replace(R.id.fragment_container, fragment, "Test"); 
    fragmentTransaction.commit(); 
} 

активность:

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

    <android.support.design.widget.CoordinatorLayout 
     android:id="@+id/main_content" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 

     <FrameLayout 
      android:id="@+id/fragment_container" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 

     <android.support.design.widget.AppBarLayout 
      android:id="@+id/appbar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

      <android.support.design.widget.TabLayout 
       android:id="@+id/tabs" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       app:layout_scrollFlags="enterAlways|scroll" 
       app:tabGravity="fill" 
       app:tabMode="fixed"/> 

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

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

</RelativeLayout> 

Фрагмент макета:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       xmlns:app="http://schemas.android.com/apk/res-auto" 
       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="wrap_content" 
     android:layout_above="@+id/bottomView" 
     android:scrollbars="vertical" 
     android:visibility="visible"/> 

    <RelativeLayout 
     android:id="@+id/bottomView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:background="#d4285d" 
     app:layout_scrollFlags="enterAlways"> 

     <Button 
      android:id="@+id/button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Do something..." 
      android:textSize="14sp"/> 

    </RelativeLayout> 
</RelativeLayout> 

Конечная цель здесь для фрагмента, чтобы нижний бар всегда на экране, и просмотр ресайклера прокручивает панель приложения.

Возможно ли это?

Спасибо всем!

+1

У меня такая же проблема. Я «решил» его, поместив «bottomLayout» в Activity (а не в Fragment) и за пределы координатораLayout. Теперь он остается видимым даже при прокрутке. Тем не менее, я также иногда хочу скрыть это (не при прокрутке, но когда я нажимаю кнопку на панели инструментов), и в этом случае прокручиваемый вид (RecyclerView) не заполняет оставшееся место, вместо этого он остается «пустым» (белый). Кроме того, «bottomView» появляется поверх прокрутки, даже если он находится за пределами координатораLayout и под ним в LinearLayout. Я в замешательстве ... –

+0

Ник, в то время я решил использовать тот же подход, когда bottomLayout помещается в Activity. Я обработал это в общем виде, добавив FrameLayout в Activity, из которого я получаю доступ из фрагмента и добавляю туда представление. Это грязно, но я не мог обойти это. Мне не нужно иметь дело со скрытием этого бара иногда (кроме скрытия его полностью, когда я переключаю фрагменты), поэтому я не могу прокомментировать эту проблему ... извините. – Zach

ответ