2017-09-24 4 views
0

Je règle l'élévation sur le TabLayout à l'intérieur d'un ViewPager mais il ne l'affiche pas du tout. J'ai essayé beaucoup de réponses ici sur stackoverflow mais je n'ai pas pu résoudre le problème. Réglage android: clipToPadding = "false" dans le CoordinatorLayout ne résout pas non plus le problème. Toute aide serait appréciée. Voici le xml de la mise en page que je me sers, mais maintenant obtenir altitude:L'élévation ne fonctionne pas sur TabLayout

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

    <View 
     android:id="@+id/statusBarBackground" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
     android:clipToPadding="false" > 

     <ScrollView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:clipToPadding="false" > 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|enterAlways" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

    </ScrollView> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:tabMode="fixed" 
      app:tabGravity="fill" 
      app:elevation="3dp" /> 

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

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior" /> 

</android.support.design.widget.CoordinatorLayout> 
+0

ajoutez simplement l'application: elevation = "0dp" à AppBarLayout .. – ZeroOne

+1

@ZeroOne ajoutant 'app: elevation =" 0dp "' AppBarLayout ne fonctionnait pas. – Ali

+1

oh désolé .. changer 0dp à une autre valeur ex: 6dp .. – ZeroOne

Répondre

2

app changement: élévation = "3DP" pour android: élévation = "3DP"

<android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:tabMode="fixed" 
      app:tabGravity="fill" 
     change ----> android:elevation="3dp" /> 
+0

Toujours pas d'élévation. J'utilise la bibliothèque de soutien si. https://stackoverflow.com/a/33054366/6050536 – Ali

2
  • Pour que l'ombre s'affiche, vous devez définir un arrière-plan sur votre TabLayout. Il peut s'agir de la même couleur que l'arrière-plan de votre fenêtre (à condition qu'il s'agisse d'une couleur solide sans alpha).
  • De plus, vous devez lui donner Tablayout marge pour voir l'élévation. marge minimale devrait être elevation vous donner

    android.support.design.widget.TabLayout android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:elevation="6dp" android:margin="10dp" android:background="@color/white" />

0

Vous avez quelques problèmes avec votre mise en page:

  1. changement app: élévation = "3DP" -> android: élévation = » 3DP »
  2. ajouter android: background = "couleur @/colorPrimary" à votre TabLayout
  3. Ajouter android: paddingBottom = "3DP" à Votre AppBarLayout

L'idée principale est que votre ombre ne s'affichera pas si l'arrière-plan de la vue est transparent ou si la vue parente écrase votre ombre.

Vous aurez toujours quelques problèmes à résoudre, mais c'est un début.

+0

toujours pas d'ombre et le remplissage a fait TabLayout pour augmenter. – Ali

+0

Si vous le dites provoquer votre TabLayout à augmenter, cela signifie est de jeter une ombre. Sinon, comment auriez-vous la perception de la profondeur? Donc, votre problème maintenant est que l'élévation de votre ScrollView est inférieure à celle de votre TabLayout, ce qui signifie que l'ombre de TabLayout est sur le ScrollView. –

+0

TabLayout est ci-dessous ScrollView donc je ne pense pas que leurs ombres se chevauchent. – Ali