Когда ListView перестает влазить в экран, он перекрывает fab, после чего кликнуть по fab уже не получается (пока ListView не "дошел" до fab - fab кликабелен). Все клики идут на элементы списка. На скрине видно, как разделители идут поверх fab.
Gradle
compile 'com.android.support:design:25.3.1'
XML
Фрейм используется для фрагментов
@Override
public void setFragment(Fragment f) {
getFragmentManager()
.beginTransaction()
.replace(R.id.main_frame, f)
.commit();
Проблема только на эмуляторе (Genymotion, на нативном попробовать не могу). Эмулируется Nexus S API 16 480 x 800.
Физическое устр-во на котором все работает: Xiaomi API 21 1080 x 1920
Ответ
Да, есть такая проблема до API 21.
Суть её в том, что по факту, в вашей разметке FAB находится в контейнере на 0 уровне и все последующие добавляемые элементы перекрывают его (т.к. отрисовка детей в контейнере происходит по порядку их добавления, то самые последние имеют максимальный z-индекс) и, соответственно, клики не проходят. При этом с API 21 FAB всегда выше любой вьюхи в одном с ним контейнере.
У вас 3 варианта:
Установить программно z-индекс для FAB:
ViewCompat.setZ(fab, 42);
Переделать разметку так, чтобы FAB был всегда выше в иерархии чем фрагменты. Например сделав ещё один FrameLayout внутри текущего и в него фрагменты добавлять.
Создать свой контейнер в котором реализовать свой порядок отрисовки детей. Пример тут: https://stackoverflow.com/a/39161932/3212712
Комментариев нет:
Отправить комментарий