AppBarLayout с высотой=0dp не отвечает на сенсорные События (нажмите)
я использовал AppBarLayout
внутри CoordinatorLayout
, в мое приложение. Из-за определенных требований к дизайну я был вынужден удалить тень ниже AppBarLayout
элемент, выполненный путем установки его свойства высоты в 0. (app:elevation="0"
). После этого элементы внутри AppBarLayout вкладки не реагируют на события касания / щелчка.
установив высоту обратно в 1dp, элементы отвечают на события касания / щелчка, но затем я возвращаюсь к тени...
тут у кого-нибудь есть предложение о том, как заставить элементы реагировать на события касания/щелчка во время AppBarLayout
на 0dp
высоты?
экстракт код:
<android.support.design.widget.CoordinatorLayout
android:id="@+id/rootLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="@dimen/app_bar_height"
app:elevation="0dp">
<android.support.v7.widget.Toolbar
android:id="@+id/my_toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize">
<ImageView
android:layout_width="wrap_content"
android:layout_height="45dp"
android:scaleType="fitCenter"
android:layout_gravity="center"
android:id="@+id/toolbar_logo"
android:maxHeight="45dp"
android:contentDescription="Main logo"/>
</android.support.v7.widget.Toolbar>
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabIndicatorColor="@color/tab_indicator_color"
app:tabTextColor="@color/primary_text_grey"
app:tabIndicatorHeight="3dp"
android:id="@+id/tab_layout">
</android.support.design.widget.TabLayout>
</android.support.design.widget.AppBarLayout>.......
2 ответов
решил это, заменив CoordinatorLayout
элемент LinearLayout
С android:orientation="vertical"
. Используя CoordinatorLayout
кажется, был неправильный подход к этому.
хотите закрыть цикл на этом, так как я столкнулся с очень похожей проблемой.
проблема не в том, что elevation=0dp, проблема в том, что CoordinatorLayout ведет себя аналогично FrameLayout, то есть элементы, объявленные в XML позже, "сверху" элементов, объявленных ранее. Изменение линейной компоновки произошло, потому что она не поддерживает "перекрывающиеся элементы".
правильное решение-переместить AppBarLayout (или любой другой элемент) на верх любого элемента, объявленного после этого, перехватывает событие. Причина, по которой он работает, когда высота > 0, заключается в том, что высота учитывается при отправке события касания, но в случае, если высоты равны, вы столкнетесь с этой же проблемой.