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, заключается в том, что высота учитывается при отправке события касания, но в случае, если высоты равны, вы столкнетесь с этой же проблемой.