5

Uygulamamda CoordinatorLayout içinde AppBarLayout kullanıyorum. Bazı tasarım gereksinimleri nedeniyle, AppBarLayout öğesinin altındaki gölgeyi kaldırım özelliğini, 0 (app:elevation="0") olarak ayarlayarak yapılır. AppBarLayout içindeki öğeleri yaptıktan sonra, sekmeler dokunma/tıklama olaylarına yanıt vermiyor. Elemanlar/dokunma olayları tıkla davranıyoruz, ama sonra geri bir gölge sahip değilim geri 1dp Yüksekliğin ayarlayarakAppBarLayout with elevation = 0dp dokunmatik olaylara yanıt vermiyor (tıklama)

...

kimse elemanları tepki yapmak için nasıl bir öneri var mı AppBarLayout0dp yüksekliğinde iken olaylara dokunmak/tıklama yapmak için?

Kod özü:

<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>....... 

cevap

1

android:orientation="vertical" ile LinearLayout ile CoordinatorLayout eleman değiştirerek bu çözüldü. CoordinatorLayout'u kullanmak, bunun yanlış bir yaklaşımı gibi görünüyor.

1

Çok benzer bir sorunla karşılaştığım için bu döngüyü kapatmak istiyorum.

Sorun şu ki, yükselme = 0dp değil, sorun, KoordinatorLayout'un bir FrameLayout'a benzer şekilde davranmasıdır; bu, XML'de bildirilen öğelerin daha önce bildirilen öğelerin "üstünde" olduğunu gösterir. Doğrusal mizanpaja geçiş, 'örtüşen elemanlar'ı desteklemediği için işe yaradı.

Doğru çözüm, AppBarLayout öğenizi (veya öğeyi ne olursa olsun), olayın ele geçirilmesinden sonra hangi öğenin bildirildiğinin üzerine getirmektir. Yüksekliğin> 0 olduğu zaman çalışmasının nedeni, dokunma olayını gönderirken yükselmenin hesaba katılmasıdır, ancak yüksekliklerin eşit olması durumunda, aynı sorunla karşılaşırsınız.

İlgili konular