Intereting Posts
API API геолокации Android BroadcastReceiver не запускается BufferQueue был оставлен: при воспроизведении видео с помощью TextureView Сброс прокрутки в ScrollView Найти представление с заданными координатами x / y в android Android: событие Click для уведомления строки состояния Как изменить логотип запуска приложения в Android Studio? Изменение языка устройства через ADB Android-код для записи видео с помощью удаленной IP-камеры, к которой осуществляется доступ с помощью URL-адреса Android прокручивается в нижней части списка Невозможно найти совместимый Android SDK для компиляции при запуске `tns platform add android` Правильное использование фонового сервиса / широковещательного приемника Как отобразить пункт меню со значком и текстом в AppCompatActivity Существует ли универсальный или «жирный» файл класса для Java? Не удается заставить события работать в моем libgdx Актер Показать AlertDialog в любом положении экрана

Добавить виды под панелью инструментов в CoordinatorLayout

У меня есть следующий макет:

<android.support.design.widget.CoordinatorLayout android:id="@+id/main_content" 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.AppBarLayout android:id="@+id/appBar" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.ActionBar"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> </android.support.design.widget.AppBarLayout> <FrameLayout android:id="@+id/content" android:layout_width="match_parent" android:layout_height="match_parent" /> </android.support.design.widget.CoordinatorLayout> 

Я добавляю Fragment s в FrameLayout , заменяя их. Один из моих Fragment – это список, который имеет следующий макет:

 <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 

Моя проблема здесь в том, что панель инструментов нарисована над списком . Я попытался решить это, обернув содержимое CoordinatorLayout в LinearLayout , который решил LinearLayout , но таким образом поведение прокрутки в панели управления больше не работает.

Любая помощь высоко ценится!

Solutions Collecting From Web of "Добавить виды под панелью инструментов в CoordinatorLayout"

Возьмите атрибут

 app:layout_behavior="@string/appbar_scrolling_view_behavior" 

Выключите RecyclerView и поместите его в FrameLayout который вы пытаетесь показать на Toolbar .

Я обнаружил, что одна важная вещь, которую выполняет поведение прокрутки, заключается в компоновке компонента под панелью инструментов. Поскольку FrameLayout имеет потомок, который будет прокручиваться ( RecyclerView ), CoordinatorLayout получит эти прокручивающие события для перемещения Toolbar .


Еще одна вещь, о которой нужно помнить: это поведение макета приведет к тому, что высота FrameLayout будет иметь размер, как если бы Toolbar уже была прокручена , а с полной Toolbar все изображение просто сдвигается вниз, так что нижняя часть представления находится ниже Нижней части CoordinatorLayout .

Это было для меня неожиданностью. Я ожидал, что представление будет динамически изменяться по мере прокрутки панели инструментов вверх и вниз. Поэтому, если у вас есть прокручиваемый компонент с фиксированным компонентом в нижней части вашего представления, вы не увидите этот нижний компонент до тех пор, пока вы полностью не прокрутите Toolbar .

Поэтому, когда я хотел привязать кнопку в нижней части пользовательского интерфейса, я работал вокруг этого, поместив кнопку внизу CoordinatorLayout ( android:layout_gravity="bottom" ) и добавив нижнее поле, равное высоте кнопки, к Вид под панелью инструментов.

Мне удалось это исправить, добавив:

андроид: layout_marginTop = "атр / actionBarSize"

Для FrameLayout:

  <FrameLayout android:id="@+id/content" android:layout_marginTop="?attr/actionBarSize" android:layout_width="match_parent" android:layout_height="match_parent" />