2015-06-09 2 views
19

Ich bin ein TabLayout und ViewPager mit ActionBar tabs nach dem Leitfaden zur Anzeige Google Play Style Tabs using TabLayout jedoch sind meine Laschen an der linken Seite der ActionBar zerquetscht, unten gezeigt:Tabs in TabLayout nicht ganze ActionBar füllen


Und Ich möchte, dass sie die ganze Stange mit gleicher Breite aufnehmen.

In activity_main.xml einem Stil wurde geschaffen, um zu zeigen die 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" /> 

Hier ist der styles.xml Code:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="windowActionBar">true</item> 
    <item name="tabIndicatorColor">#ffff0030</item> 
</style> 
Ich habe nur ein paar kleinere Änderungen an der Führungs gemacht

Auch meine MainActivity erweitert jetzt AppCompatActivity anstelle einer FragmentActivity.

+0

Ihr TabLayout ist in ein LinearLayout eingebettet, wie in der Anleitung gezeigt? – Gosu

+0

Ja, es ist mit dem LinearLayout –

+1

hinzufügen das funktioniert: 'app: tabGravity =" füllen "' – Weel

Antwort

35

Sie auf die TabLayout verweisen.

GRAVITY_CENTER Schwerkraft verwendet, um die Tabs in der Mitte des TabLayout auszulegen.

GRAVITY_FILL Schwerkraft verwendet, um das TabLayout so viel wie möglich zu füllen.

MODE_FIXED Feste Registerkarten zeigen alle Registerkarten gleichzeitig an und werden am besten für Inhalte verwendet, die von schnellen Drehpunkten zwischen Registerkarten profitieren.

Scrollbare Registerkarten zeigen zu einem beliebigen Zeitpunkt eine Untergruppe von Registerkarten an und können längere Registerkartenbeschriftungen und eine größere Anzahl von Registerkarten enthalten.

Setzen Sie dies in Ihrem Code oder Ihrem Layout-XML.

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

oder

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

Im Allgemeinen können Sie den Code wie Schlag verwenden, ohne tabGravity und tabMode Einstellung arbeiten.

<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

Ich nahm die Zeile 'app: tabMode =" scrollable "' und löste das Problem. –

+0

Ich kann auch bestätigen, dass das Entfernen von app: tabMode = "" aus der XML-Datei alles löste. Wenn Sie den Wert für den tabMode ändern, werden die Registerkarten weiterhin als gequetscht angezeigt. Es wurde nur gelöst, indem dieses Attribut überhaupt nicht aufgenommen wurde. – ChallengeAccepted

+0

@Ellie Zou arbeitete wie ein Charme !! Vielen Dank! :) –

3

versuchen, dies zu MainActivity Zugabe:

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

Hinzufügen - app: tabGravity = "fill" -Eigenschaft in der XML.

Für Beispiel -

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

versuchen, dies funktioniert

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

Einfache Antwort wich ich von hier aus habe ist: here

Sie setzen diese nur in der XML-Code:

<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

arbeitete .. danke –

+3

Sie töten es! Der Parameter tabMaxWidth hat mir geholfen, ein nicht funktionierendes Gerät zu reparieren. app: tabGravity = "fill" & app: tabMode = "fixed" war nicht genug für eines meiner Geräte. – Tobliug

+1

Dies behebt ein Problem für mich im Querformat (obwohl es im Hochformat funktionierte) – TWL

0

Stellen Sie TabLayout width so ein, dass es dem übergeordneten Element

entspricht.

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