TabWidget - Wie Sollposition Indikator Text?
Frage
ich versuche TabHost und TabWidget in meiner Android-Anwendung zu verwenden. Das ist mein Layout main.xml:
<TabHost
android:id="@+id/mainTabHost"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="65px"/>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/contentTags"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
</LinearLayout>
<LinearLayout
android:id="@+id/contentPreferences"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
</LinearLayout>
</FrameLayout>
</TabHost>
Und mein Code:
final TabHost mainTabHost = (TabHost) this.findViewById(R.id.mainTabHost);
mainTabHost.setup();
final TabHost.TabSpec tabSpecTags = mainTabHost.newTabSpec("tabTags");
tabSpecTags.setIndicator(this.getString(R.string.tab_name_tags));
tabSpecTags.setContent(R.id.contentTags);
mainTabHost.addTab(tabSpecTags);
final TabHost.TabSpec tabSpecPreferences = mainTabHost.newTabSpec("tabPreferences");
tabSpecPreferences.setIndicator(this.getString(R.string.tab_name_preferences));
tabSpecPreferences.setContent(R.id.contentPreferences);
mainTabHost.addTab(tabSpecPreferences);
Das Problem ist, dass ich will nicht meine Tabs so groß sein (65px). Jedoch, wenn ich die layout_height des TabWidget zu z.B. 30px, ich kann nicht die Registerkarte Etiketten (Anzeige) auf den Registerkarten überhaupt sehen.
Es scheint, wie es eine „minimal erforderlichen“ Höhe für die TabWidget (65px?), Und die Anzeige wird auf der Unterseite dieser 65px positioniert?
Gibt es eine Möglichkeit, die Positionierung der Anzeige einstellen?
Danke!
Lösung
Setzen Sie jedoch, wenn ich die layout_height von die TabWidget zu z.B. 30px, kann ich nicht siehe die Tab-Etiketten (Indikator) auf dem Registerkarten überhaupt.
Beachten Sie, dass die Techniken hierfür nicht unbedingt zuverlässig sein in Zukunft Android Versionen, wenn sie ändern sich, wie ein TabHost
aufgebaut ist.
Gibt es eine Möglichkeit das justieren Positionierung des Indikators?
Beginnend mit API Stufe 4 (aka, Android 1.6), übernimmt TabHost.TabSpec
eine View
als Indikator über setIndicator()
. Ich habe es nicht ausprobiert, aber es kann Ihnen eine größere Kontrolle über das Layout eines einzelnen Registerkarte Anzeige geben.
Andere Tipps
ich sehe ... wenn u addTab, in der Regel verwenden wir setIndicator wie folgt aus: QTabHost.addTab (QTabHost.newTabSpec ( "tab_test2"). SetIndicator ( "TAB 2"). Bla bla ....
u kann Textview verwenden, um "TAB 2" zu ersetzen, wie dies wurde:
TView = new Textview (this); tview.setText ( "Titel hier"); QTabHost.addTab (QTabHost.newTabSpec ( "tab_test2"). SetIndicator (TView) .bla bla ....
alle u brauchen, ist ändern Sie einfach die Textview. Dank ... ^^
int iH = getTabWidget().getLayoutParams().height;
for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i++) {
tabHost.getTabWidget().getChildAt(i).getLayoutParams().height = iH;
}
for (int i = 0; i < 4; i++) {
tabhost.getTabWidget().getChildAt(i).getLayoutParams().height = 50;
}
durch diese verwenden wir können sehr leicht tun