5

Я использовал AppBarLayout внутри CoordinatorLayout, в моем приложении. Из-за определенных требований к дизайну я был вынужден удалить тень ниже элемента AppBarLayout, сделав настройку его свойства высоты на 0. (app:elevation="0"). После этого элементы внутри AppBarLayout, вкладки не реагируют на события касания/клика.AppBarLayout с elevation = 0dp не отвечает на touch-events (нажмите)

Установив высоту обратно 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>....... 

ответ

1

решаемые этим путем замены CoordinatorLayout элемента с LinearLayout с android:orientation="vertical". Использование CoordinatorLayout, по-видимому, было неправильным подходом к этому.

1

Хотите закрыть цикл на этом, так как я столкнулся с очень похожим вопросом.

Проблема не в том, что elevation = 0dp, проблема в том, что CoordinatorLayout ведет себя аналогично FrameLayout, то есть элементы, объявленные в XML позже, являются «сверху» ранее объявленных элементов. Смена на линейную компоновку срабатывала, потому что она не поддерживает «перекрывающиеся элементы».

Правильное решение заключается в перемещении вашего AppBarLayout (или любого другого элемента) поверх любого элемента, объявленного после перехвата события. Причина, по которой он работает, когда высота> 0 - это то, что при отправке события касания учитывается возвышение, но в случае, если отметки равны, вы столкнетесь с этой же проблемой.

Смежные вопросы