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;
}
с помощью этого мы можем сделать очень легко