J'utilise TabLayout
et ViewPager
pour afficher ActionBar tabs
en suivant le guide Les onglets de style Google Play à l'aide de TabLayout , mais mes onglets sont écrasés à gauche du panneau Action, comme indiqué ci-dessous:
Et je voudrais qu’ils occupent toute la barre avec des largeurs égales. J'ai apporté seulement quelques modifications mineures au guide:
Dans activity_main.xml, un style a été créé pour afficher la barre d’action:
<Android.support.design.widget.TabLayout
Android:id="@+id/sliding_tabs"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
style="@style/AppTheme"
app:tabMode="scrollable" />
Voici le code styles.xml:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowActionBar">true</item>
<item name="tabIndicatorColor">#ffff0030</item>
</style>
De plus, ma MainActivity
étend maintenant AppCompatActivity
au lieu d'une FragmentActivity
.
Vous pouvez vous référer au TabLayout .
GRAVITY_CENTER
Gravity avait l'habitude de disposer les onglets au centre de TabLayout.
GRAVITY_FILL
Gravity remplissait le plus possible TabLayout.
MODE_FIXED
Les onglets fixes affichent tous les onglets simultanément et sont mieux utilisés avec un contenu bénéficiant de pivots rapides entre les onglets.
MODE_SCROLLABLE
Les onglets déroulants affichent un sous-ensemble d'onglets à tout moment et peuvent contenir des étiquettes plus longues et un plus grand nombre d'onglets.
Définissez ceci dans votre code ou votre mise en page XML.
app:tabGravity="center"
app:tabMode="fixed"
ou
tabLayout.setTabGravity(TabLayout.GRAVITY_CENTER);
tabLayout.setTabMode(TabLayout.MODE_FIXED);
En règle générale, utiliser un code tel que blow peut fonctionner sans définir tabGravity
et tabMode
.
<Android.support.design.widget.AppBarLayout
Android:id="@+id/appbar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:background="?attr/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:layout_scrollFlags="scroll|enterAlways" />
<Android.support.design.widget.TabLayout
Android:id="@+id/tabs"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
</Android.support.design.widget.AppBarLayout>
Réponse simple que j'ai obtenue de ici .
Vous venez de mettre ceci dans votre code XML:
<Android.support.design.widget.TabLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
app:tabMaxWidth="0dp"
app:tabGravity="fill"
app:tabMode="fixed" />
Essayez d'ajouter ceci à MainActivity:
tabLayout.setTabMode(TabLayout.MODE_FIXED);
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
Ajoutez - app: tabGravity = "fill" dans le fichier XML.
Par exemple -
<Android.support.design.widget.TabLayout
Android:id="@+id/tablayout"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
app:tabGravity="fill" />
essayez ça marche
app:tabGravity="fill"
app:tabMode="fixed"
Définit la largeur de TabLayout pour correspondre à Parent
Comme ça.
<TabLayout
Android:layout_width="match_parent"
Android:layout_height="60dp"/>