TabHost动态添加标签

时间:2014-05-05 10:14:35

标签: android android-layout android-studio

我有一个TabHost,我想动态创建标签。我看了很多例子,但他们没有工作。

TabHost tabHost;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tabHost = (TabHost)findViewById(android.R.id.tabhost);
tabHost.setup();
TabHost.TabSpec tab1 = tabHost.newTabSpec("First Tab");
tab1.setIndicator("First Tab");
tab1.setContent(new Intent(this,MainActivity2.class));
tabHost.addTab(tab1);

这是我尝试过的最后一件事,但它不起作用。这是我考虑过的一些链接。我无法找到我做错的事。

Example1

Example2

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.LH.tabletres.MainActivity">
    <LinearLayout
        android:id="@+id/LinearLayout01"
        android:orientation="vertical"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent">

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

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

    </LinearLayout>
</TabHost>

3 个答案:

答案 0 :(得分:1)

我想您忘了将android:id="@android:id/tabhost"设置为tabhost。如下所示

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent" >........
.....
</TabHost>

答案 1 :(得分:0)

我认为你必须写

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

所以将@android:id更改为@+id

我希望有所帮助。

答案 2 :(得分:0)

使用此代码:

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

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

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

        <HorizontalScrollView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:fillViewport="true"
            android:scrollbars="none">

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

            </TabWidget>

        </HorizontalScrollView>

        <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"
                android:background="#FFFFFF"
                android:orientation="vertical">

            </LinearLayout>
        </FrameLayout>
    </LinearLayout>
</TabHost>

    final TabHost tabs = (TabHost) findViewById(R.id.tabhost);
    tabs.setup();
    tabs.setCurrentTab(0);

    for (int i = 0; i < 5; i++) {
        TabHost.TabSpec spec1 = tabs.newTabSpec("tag1");

        spec1.setContent(new TabHost.TabContentFactory() {
            public View createTabContent(String tag) {
                return (new AnalogClock(MainActivity.this));
            }
        });
        spec1.setIndicator("Clock");
        tabs.addTab(spec1);
    }