TabWidget - Как установить положение текста индикатора?

Я пытаюсь использовать 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, например, 30px, я вообще не смогу видеть ярлыки вкладок (индикатор) на вкладках.

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

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

Спасибо!

4 ответа

Решение

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

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

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

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

Я вижу... когда вы addTab, обычно мы используем setIndicator, как это: QTabHost.addTab(QTabHost.newTabSpec("tab_test2").setIndicator("TAB 2"). бла бла....

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

tview = новый TextView(это); tview.setText("Название здесь"); QTabHost.addTab(QTabHost.newTabSpec("tab_test2"). SetIndicator(tview).bla bla....

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

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

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

Другие вопросы по тегам