5

Ho utilizzato AppBarLayout all'interno di un CoordinatorLayout, nella mia app. A causa di alcuni requisiti di progettazione, sono stato costretto a rimuovere l'ombra sotto l'elemento AppBarLayout, impostando la relativa proprietà di elevazione su 0. (app:elevation="0"). Dopo aver eseguito questa operazione all'interno di AppBarLayout, le schede non rispondono agli eventi tocco/clic.AppBarLayout con elevazione = 0dp non risponde agli eventi di tocco (clic)

Impostando l'elevazione di nuovo a 1DP, gli elementi stanno rispondendo a toccare/click eventi, ma poi sono tornato ad avere un'ombra ...

Qualcuno ha un suggerimento su come rendere la risposta degli elementi toccare/fare clic sugli eventi mentre lo AppBarLayout è a quota 0dp?

estratto Codice:

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

risposta

1

Risolto questo sostituendo l'elemento CoordinatorLayout con un LinearLayout con android:orientation="vertical". Utilizzando CoordinatorLayout sembra essere stato un approccio sbagliato a questo.

1

Desidero chiudere il ciclo perché si è verificato un problema molto simile.

Il problema non è quell'elevazione = 0dp, il problema è che il CoordinatorLayout si comporta in modo simile a FrameLayout, nel senso che gli elementi dichiarati in XML successivamente sono "in cima" agli elementi dichiarati in precedenza. Il passaggio al layout lineare è avvenuto perché non supporta gli "elementi sovrapposti".

La soluzione corretta è spostare l'AppBarLayout (o qualunque sia l'elemento) sopra qualsiasi elemento dichiarato dopo che intercetta l'evento. La ragione per cui funziona quando l'elevazione> 0 è perché l'elevazione viene presa in considerazione quando si invia l'evento tattile, ma nel caso in cui le elevazioni sono uguali si incontrerà lo stesso problema.