9

Próbowałem implementacji paska narzędzi z gradientowym tłem (od czarnego do przezroczystego). Pasek narzędzi znajduje się wewnątrz AppBarLayout, który znajduje się wewnątrz elementu Koordynatora, ponieważ chcę, aby pasek narzędzi przesuwał się poza ekran podczas przewijania ekranu (przesuń suwak | enterAlways scroll flags). To działa perfekcyjnie dla wersji pre-lizak i wygląda następująco:Android: gradient tła AppBarLayout

enter image description here

Ale na lizaka to, co jest wyświetlane:

weird upside down trapezoid in the background

Próbowałem innych kombinacji tła na pasku narzędzi i appbarlayout, aby pasek narzędzi miał gradientowe tło, ale wszystko daje taki sam wynik. Próbowałem szukać podobnych problemów i nie znalazłem żadnego.

<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@drawable/gradient"> 

     <android.support.v7.widget.Toolbar 
      android:layout_height="wrap_content" 
      android:layout_width="match_parent" 
      android:background="@android:color/transparent" 
      app:layout_scrollFlags="scroll|enterAlways"> 

      ... 

     </android.support.v7.widget.Toolbar> 
    </android.support.design.widget.AppBarLayout> 
</android.support.design.widget.CoordinatorLayout> 
+1

https://code.google.com/p/android/issues/detail?id=180119 – jpardogo

+0

Wydaje się podobny problem, ale nie używam elewację, a wyniki wizualne wyglądać jeszcze gorzej. – neits

+0

czy masz na to rozwiązanie? Mam ten sam problem! –

Odpowiedz

3

AppBarLayout wymusza podniesienie. Ponieważ pasek narzędzi znajduje się wewnątrz AppBarLayout, a pasek narzędzi jest przezroczysty, boczny i dolny cień AppBarLayout stał się oczywisty.

Dołącz app:elevation="0dp" do swojego AppBarLayout. Mam nadzieję, że to pomoże.

+0

upewnij się, że używasz http://schemas.android.com/apk/res-auto jako adresu URL "xmlns: app" –

0

Umieść Toolbar i TabLayout wewnątrz LinearLayout i ustaw atrybuty tła dla LinearLayout zgodnie z poniższym kodem. To zadziałało i użyłem tego kodu do mojej aplikacji.

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="72dp" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:background="@drawable/appbar_bg"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="36dp" 
      android:background="@android:color/transparent" 
      app:layout_scrollFlags="scroll|enterAlways" 
      app:popupTheme="@style/AppTheme.PopupOverlay"> 

     </android.support.v7.widget.Toolbar> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

    </LinearLayout> 

</android.support.design.widget.AppBarLayout>