5

Ich habe in meiner App AppBarLayout innerhalb einer CoordinatorLayout verwendet. Aufgrund bestimmter Designanforderungen war ich gezwungen, den Schatten unter dem Element AppBarLayout zu entfernen, indem ich die Eigenschaft height auf 0 setzte (app:elevation="0"). Nachdem die Elemente im AppBarLayout ausgeführt wurden, reagieren die Registerkarten nicht auf Berührungs-/Klickereignisse.AppBarLayout mit Höhe = 0dp reagiert nicht auf Berührungsereignisse (Klick)

die Höhe zurück zu 1 dp Durch die Einstellung ist die Elemente reagieren Ereignisse zu berühren/klicken, aber dann bin ich wieder einen Schatten mit ...

Hat jemand einen Vorschlag hat, wie die Elemente machen reagieren Berühren/Klicken auf Ereignisse, während die AppBarLayout bei 0dp Elevation ist?

-Code-Extrakt:

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

Antwort

1

dieses Problem gelöst, indem das CoordinatorLayout Element mit einem LinearLayout mit android:orientation="vertical" ersetzen. Die Verwendung von CoordinatorLayout scheint ein falscher Ansatz zu sein.

1

Wollen Sie die Schleife auf diese schließen, da ich in ein sehr ähnliches Problem lief.

Das Problem ist nicht, dass Höhe = 0dp, das Problem ist, dass das CoordinatorLayout verhält sich ähnlich wie ein FrameLayout, dh Elemente in XML deklariert später sind "oben" von Elementen früher deklariert. Das Ändern in das lineare Layout funktioniert, weil es keine überlappenden Elemente unterstützt.

Die richtige Lösung ist, Ihr AppBarLayout (oder was auch immer das Element ist) über das Element zu verschieben, das nach dem Abfangen des Ereignisses deklariert wird. Der Grund, warum es gilt, wenn die Höhe> 0 ist, ist, dass die Höhe beim Absetzen des Berührungsereignisses berücksichtigt wird, aber im Fall, dass die Höhen gleich sind, werden Sie auf dasselbe Problem stoßen.

Verwandte Themen