TabWidget - Как установить положение текста индикатора? - PullRequest
4 голосов
/ 31 января 2010

Я пытаюсь использовать TabHost и TabWidget в моем приложении для Android. Это мой макет 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>

И мой код:

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);

Проблема в том, что я не хочу, чтобы мои вкладки были такими высокими (65 пикселей). Однако, если я установлю layout_height TabWidget, например, на. 30 пикселей, я вообще не вижу метки вкладок (индикатор) на вкладках.

Похоже, что есть минимальная необходимая высота для TabWidget (65px?), А индикатор расположен внизу этого 65px?

Есть ли способ отрегулировать положение индикатора?

Спасибо!

Ответы [ 4 ]

4 голосов
/ 01 февраля 2010

Однако, если я установлю layout_height из TabWidget, например, 30 пикселей, я не могу см. ярлыки вкладок (индикатор) на вкладки вообще.

Обратите внимание, что методы для этого не обязательно будут надежными в будущих выпусках Android, если они изменят способ построения TabHost.

Есть ли способ настроить позиционирование индикатора?

Начиная с API уровня 4 (например, Android 1.6), TabHost.TabSpec принимает View в качестве индикатора через setIndicator(). Я не пробовал, но это может дать вам больший контроль над макетом индикатора отдельной вкладки.

2 голосов
/ 21 июня 2010

я вижу ... когда вы добавляете addTab, обычно мы используем setIndicator следующим образом: QTabHost.addTab (QTabHost.newTabSpec ("tab_test2"). SetIndicator ("TAB 2"). Bla bla ....

Вы можете использовать TextView для замены "TAB 2", стало так:

tview = new TextView (this); tview.setText («Название здесь»); QTabHost.addTab (QTabHost.newTabSpec ("tab_test2"). SetIndicator (tview) .bla bla ....

Все, что вам нужно, это просто изменить текстовое представление. Спасибо ... ^^

1 голос
/ 29 декабря 2011
int iH = getTabWidget().getLayoutParams().height;

for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i++) {
            tabHost.getTabWidget().getChildAt(i).getLayoutParams().height = iH;
        }
0 голосов
/ 19 ноября 2010
for (int i = 0; i < 4; i++) {
    tabhost.getTabWidget().getChildAt(i).getLayoutParams().height = 50;
}

с помощью этого мы можем очень легко

...