Моей первой попыткой было установить android:layout_marginBottom="?attr/actionBarSize"
в FrameLayout. Это решило решение для непрокручиваемых представлений, имеющих «фиксированную» высоту с точки зрения отсутствия прокручиваемого по вертикали содержимого (например, обычный RelativeLayout с высотой match_parent
). Выравнивание компонента по нижнему краю родительского элемента (android:layout_alignParentBottom="true"
) приводит к тому, что элемент остается видимым. В предпросмотре Android Studio не видно превышения высоты.
Однако это исправление marginBotton создает новую проблему для фрагментов, чье корневое представление можно прокручивать (например, RecyclerView). Для этих представлений при прокрутке вниз нижнее поле станет видимым в виде белой полосы (в случае, если белый цвет является фоновым цветом). Это кажется разумным, так как для этих представлений функция вложенной прокрутки будет выдвигаться из панели инструментов ![ListView с последним вырезанным элементом](https ://i.stack.imgur.com/T61hz.png)
tl;dr Я решил эту проблему, применив ?attr/actionBarSize
в качестве нижнего поля к непрокручиваемым фрагментам, которые отображаются внутри Framelayout. До этого я установил высоту панели инструментов на ?attr/actionBarSize
.
Схема деятельности:
<android.support.design.widget.AppBarLayout
android:id="@+id/navContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways" />
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
/>
</android.support.design.widget.CoordinatorLayout>
Макет фрагмента:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="?attr/actionBarSize"
android:orientation="vertical">
<!-- Further stuff here -->
<TextView android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
/>
</LinearLayout>
Единственный недостаток, с которым я столкнулся прямо сейчас, — это пустое пространство, которое будет отображаться в средстве предварительного просмотра Android Studio при создании макета фрагмента.
person
Capricorn
schedule
18.11.2015