2015-06-09 17 views
19

Uso un TabLayout e ViewPager per visualizzare ActionBar tabs seguendo la guida Google Play Style Tabs using TabLayout, tuttavia i miei linguette sono schiacciati verso il lato sinistro del ActionBar, di seguito riportate:schede in TabLayout non riempire tutta ActionBar


E Mi piacerebbe che occupassero l'intera barra di uguale larghezza. Ho fatto solo un paio di piccole modifiche alla guida:

In activity_main.xml uno stile è stato creato per mostrare l'ActionBar:

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

ecco il codice styles.xml:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="windowActionBar">true</item> 
    <item name="tabIndicatorColor">#ffff0030</item> 
</style> 

Inoltre, il mio MainActivity ora estende AppCompatActivity anziché FragmentActivity.

+0

Il TabLayout è incorporato in un LinearLayout come mostrato nella guida? – Gosu

+0

Sì, con il LinearLayout –

+1

aggiungere questo funzionerà: 'app: tabGravity =" fill "' – Weel

risposta

35

è possibile fare riferimento al TabLayout.

GRAVITY_CENTER Gravità utilizzata per disporre le schede al centro di TabLayout.

GRAVITY_FILL Gravità utilizzata per riempire il TabLayout il più possibile.

MODE_FIXED Le schede fisse visualizzano tutte le schede contemporaneamente e vengono utilizzate al meglio con i contenuti che beneficiano di rapidi pivot tra le schede.

MODE_SCROLLABLE Le schede scorrevoli mostrano un sottoinsieme di schede in un dato momento e possono contenere etichette di schede più lunghe e un numero maggiore di schede.

Impostare questo nel codice o il layout xml.

app:tabGravity="center" 
app:tabMode="fixed" 

o

tabLayout.setTabGravity(TabLayout.GRAVITY_CENTER); 
tabLayout.setTabMode(TabLayout.MODE_FIXED);  

In generale, utilizzando il codice come colpo può lavorare senza impostare tabGravity e 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> 
+2

Ho estratto la riga 'app: tabMode =" scrollable "' e ha risolto il problema. –

+0

Anche io posso confermare che la rimozione dell'app: tabMode = "" dal file XML ha risolto tutto. La modifica del valore tabMode farebbe comunque apparire le schede schiacciate. È stato risolto solo non includendo questo attributo. – ChallengeAccepted

+0

@Ellie Zou ha funzionato come un fascino !! Grazie! :) –

3

Prova ad aggiungere questo per MainActivity:

tabLayout.setTabMode(TabLayout.MODE_FIXED); 
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 
1

Aggiungi - app: tabGravity = proprietà "fill" nel xml.

per esempio -

<android.support.design.widget.TabLayout 
     android:id="@+id/tablayout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:tabGravity="fill" /> 
0

provare questo funziona

app:tabGravity="fill" 
app:tabMode="fixed" 
26

semplice risposta wich ho ottenuto da qui è: here

Basta mettere questo nel codice 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" /> 
+0

ha funzionato .. grazie –

+3

Lo stai uccidendo! Il parametro tabMaxWidth mi ha aiutato a risolvere un dispositivo non funzionante. app: tabGravity = "fill" & app: tabMode = "fixed" non era abbastanza per uno dei miei dispositivi. – Tobliug

+1

risolto un problema per me in modalità orizzontale (anche se funzionava perfettamente in verticale) – TWL

0

Imposta larghezza TabLayout in modo che corrisponda a Parent

In questo modo.

<TabLayout 
    android:layout_width="match_parent" 
    android:layout_height="60dp"/> 
Problemi correlati