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!

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top