1

我正在使用标签主机来显示标签,但是即使我只是将它拖放到我的布局上并运行它,它也不显示标签,它显示白屏,我猜这是第一个标签视图的线性布局。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TabHost
        android:id="@android:id/tabhost"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" >
            </TabWidget>

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="match_parent"
                android:layout_height="match_parent" >

                <LinearLayout
                    android:id="@+id/tab1"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" >
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/tab2"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" >
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/tab3"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" >
                </LinearLayout>
            </FrameLayout>
        </LinearLayout>
    </TabHost>

</LinearLayout>

当我在模拟器或手机(华为 Ascend P1)上运行时,没有显示任何选项卡。

截屏

4

2 回答 2

5

发生这种情况仅仅是因为您不能仅使用 xml 代码创建 TabHost。您需要像这样将 TabSpecs 添加到 TabHost:

TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost);

TabSpec tab1 = tabHost.newTabSpec("First Tab");
TabSpec tab2 = tabHost.newTabSpec("Second Tab");
TabSpec tab3 = tabHost.newTabSpec("Third Tab");

tab1.setIndicator("Tab1");
tab1.setContent(new Intent(this,TabActivity1.class));

tab2.setIndicator("Tab2");
tab2.setContent(new Intent(this,TabActivity2.class));

tab3.setIndicator("Tab3");
tab3.setContent(new Intent(this,TabActivity3.class));

tabHost.addTab(tab1);
tabHost.addTab(tab2);
tabHost.addTab(tab3);
于 2015-11-18T09:54:12.240 回答
0

这个答案适用于像我这样开始使用 Kotlin 进行 Android 开发的人。以下代码使用了三个 ID,您需要将其与视图的 XML 文件匹配。首先如图书馆所述:

如果使用 findViewById() 加载 TabHost,则在添加选项卡之前调用 setup()。但是:您不需要在 TabActivity 中的 getTabHost() 之后调用 setup()。

    //Your tab host id. 
    yourTabHostId.setup()

    //Need to use var as we will reassign it for the second tab.
    //First tab is a tag and must be defined.
    var tabSpec = yourTabHostId.newTabSpec("First Tab")
    //Use the id for the first tab, for the content of your first tab.
    tabSpec.setContent(R.id.firstTab)
    tabSpec.setIndicator("First Tab")
    yourTabHostId.addTab(tabSpec)

    tabSpec = yourTabHostId.newTabSpec("Second Tab")
    //Use the id for your second tab, for the content of your second tab.
    tabSpec.setContent(R.id.secondTab)
    tabSpec.setIndicator("Second Tab")
    yourTabHostId.addTab(tabSpec)
于 2018-04-25T03:03:54.067 回答