2010-08-24 11 views
6

Ich habe eine Anwendung mit 4 Registerkarten. Standardmäßig ist jede Tabbreite 1/4 der Bildschirmbreite. Wie kann ich dies überschreiben?Unterschiedlich große Tabs in Android

Ich brauche die Tabs für jede eine andere Breite haben. Irgendwelche Ideen, wie das zu erreichen ist?

+0

i auch für die gleiche, Kasse suchen bin dieser: http://stackoverflow.com/questions/3446722/android-tabhost-problem-setindicator –

+0

interessant Paresh Looks. Haben Sie eine der beiden vorgeschlagenen Lösungen (Stil oder TabHost überschreiben) versucht? Im Moment schaue ich mir dieses Problem an und denke, der beste/schnellste Ansatz besteht darin, unsere eigenen Tabs zu erstellen (mit Buttons und Listenern). – momo

Antwort

0

Try this:

<TabWidget android:layout_width="wrap_content" ... /> 
+0

Hallo radek-k, ich benutze bereits "wrap_content" und macht keinen Unterschied, wenn ich es ändere. Wahrscheinlich bin ich dafür verantwortlich, dass ich einen Tab-Indikator verwende, nicht nur Text. Danke trotzdem – momo

1

Schließlich ich eine andere Größe Tabs ToggleButton haben verwaltet.

Meine XML ist wie dieser

<LinearLayout 
    android:id="@+id/tabs" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:layout_below="@id/header" 
> 

    <ToggleButton 
    android:id="@+id/tab1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:drawableRight="@drawable/icon_home" 
    android:textOn="" 
    android:textOff="" 
    android:background="@drawable/tabselector" 
    android:paddingLeft="15dip" 
    android:paddingRight="15dip" 
    android:layout_weight="0" 
    /> 
     <ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/top_menubar_separator" /> 

<ToggleButton 
    android:id="@+id/tab2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:drawableRight="@drawable/icon_store" 
    android:textOn="Store" 
    android:textOff="Store" 
    android:background="@drawable/tabselector" 
    android:paddingLeft="15dip" 
    android:paddingRight="15dip" 
    android:layout_weight="2" 
    /> 

Wo jeder ToggleButton eine Registerkarte ist. Der Trick besteht darin, das Gewicht zu verwenden, um die Tabs zu erweitern, um den Bildschirm vollständig zu füllen.

Die teab_selector.xml sieht wie folgt aus

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/top_menubar_selected" 
      android:state_pressed="true" 
      /> 
<item android:drawable="@drawable/top_menubar_selected" 
      android:state_checked="true" 
      /> 
     <item  android:drawable="@drawable/top_menubar_1px" /> 
</selector> 

Ich muss noch die Logik-Code für un-eine Taste drücken, wenn ein neuer ausgewählt ist, und starten Sie eine Absicht mit ta-Aktivität, aber schön sieht so weit .

2

Try this:

tabHost.getTabWidget().getChildAt(0).getLayoutParams().height = 35; 
+0

Das ändert definitiv die Höhe der Registerkarte, aber Ihr Text wird verschwinden ... Bitte lassen Sie mich wissen, wenn Sie eine Lösung für dieses Problem haben. –

+0

Ihr Text wird nur dann verschwinden, wenn Ihre Textgröße und Tab-Höhe nicht proportional sind. Versuchen Sie, die Größe des Tabstopps zu verringern oder die Höhe des Tabs zu erhöhen, damit der Text angezeigt wird. – Zeba

+0

funktionieren wie ein Charme – sivi