4

我正在尝试在我的 Android 应用程序中使用 TabHost 和 TabWidget。这是我的布局 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);

问题是我不希望我的标签太高(65px)。但是,如果我将 TabWidget 的 layout_height 设置为例如 30px,我根本看不到选项卡上的选项卡标签(指示器)。

似乎 TabWidget 有一个“最低要求”高度(65px?)并且指示器位于这个 65px 的底部?

有没有办法调整指标的位置?

谢谢!

4

4 回答 4

4

但是,如果我将 TabWidget 的 layout_height 设置为例如 30px,我根本看不到选项卡上的选项卡标签(指示器)。

请注意,这样做的技术在未来的 Android 版本中不一定可靠,如果它们改变了 aTabHost的构造方式。

有没有办法调整指标的位置?

从 API 级别 4(又名 Android 1.6)开始TabHost.TabSpecView通过setIndicator(). 我没有尝试过,但它可以让您更好地控制单个选项卡指示器的布局。

于 2010-01-31T22:31:15.957 回答
2

我明白了......当你添加Tab时,通常我们像这样使用setIndicator:QTabHost.addTab(QTabHost.newTabSpec("tab_test2").setIndicator("TAB 2").bla bla....

你可以使用TextView来替换“TAB 2”,变成了这样:

tview=新的文本视图(这个);tview.setText("这里的标题"); QTabHost.addTab(QTabHost.newTabSpec("tab_test2").setIndicator(tview).bla bla ....

你所需要的只是修改文本视图。谢谢...^^

于 2010-06-21T04:22:45.280 回答
1
int iH = getTabWidget().getLayoutParams().height;

for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i++) {
            tabHost.getTabWidget().getChildAt(i).getLayoutParams().height = iH;
        }
于 2011-12-28T23:11:30.093 回答
0
for (int i = 0; i < 4; i++) {
    tabhost.getTabWidget().getChildAt(i).getLayoutParams().height = 50;
}

通过使用这个我们可以很容易地做到

于 2010-11-19T05:39:06.273 回答