1

这是我的第一个用于 Android 的选项卡式应用程序。我浏览了 androids 网站上的“HelloTabWidget”应用程序,但我不知道如何向选项卡添加内容。FrameLayout 将东西堆叠在左上角(根据我的阅读)。我添加了几个 textview 和一个 imageView,但它只显示添加的最后一项。有没有办法使用线性布局而不是框架布局?如果没有,如何在选项卡中放置多个视图?我所做的与示例唯一不同的是我添加了第 4 个选项卡。在“活动”选项卡之一中,我插入了以下代码以尝试显示多个项目:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);    

        TextView textview = new TextView(this);
        textview.setText("This is the About tab");
        setContentView(textview);

        TextView textview2 = new TextView(this);
        textview2.setText("About Test");
        setContentView(textview2);

        ImageView imgView = new ImageView(this);
        imgView.setImageDrawable(getResources().getDrawable(R.drawable.header));
        setContentView(imgView);
    }

这是我遵循的示例的链接:http: //developer.android.com/resources/tutorials/views/hello-tabwidget.html

4

2 回答 2

3

你的布局 xml 文件是什么?我使用它,我可以在每个选项卡中堆叠几个 textview。选项卡活动:

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ScrollView android:layout_width="fill_parent" 
        android:layout_height="wrap_content" >
        <LinearLayout android:layout_width="fill_parent" 
            android:layout_height="fill_parent"
            android:orientation="vertical" >
            <TabWidget android:id="@android:id/tabs"
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content" />
            <FrameLayout android:id="@android:id/tabcontent"
                android:layout_width="fill_parent" 
                android:layout_height="fill_parent" />
        </LinearLayout>
    </ScrollView>
</TabHost>

选项卡内的活动:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    <TextView android:id="@+id/textOne" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <TextView android:id="@+id/textTwo" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
<LinearLayout>

我自己是新手,所以可能有更好的方法来做到这一点。不过,这对我有用。

于 2011-01-11T20:58:36.117 回答
1

您没有仔细阅读示例。看看第 6 点;你会看到类似的东西:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Resources res = getResources(); // Resource object to get Drawables
    TabHost tabHost = getTabHost();  // The activity TabHost
    TabHost.TabSpec spec;  // Resusable TabSpec for each tab
    Intent intent;  // Reusable Intent for each tab

    // Create an Intent to launch an Activity for the tab (to be reused)
    intent = new Intent().setClass(this, ArtistsActivity.class);

    // Initialize a TabSpec for each tab and add it to the TabHost
    spec = tabHost.newTabSpec("artists").setIndicator("Artists",
                      res.getDrawable(R.drawable.ic_tab_artists))
                  .setContent(intent);
    tabHost.addTab(spec);

    // Do the same for the other tabs
    intent = new Intent().setClass(this, AlbumsActivity.class);
    spec = tabHost.newTabSpec("albums").setIndicator("Albums",
                      res.getDrawable(R.drawable.ic_tab_albums))
                  .setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, SongsActivity.class);
    spec = tabHost.newTabSpec("songs").setIndicator("Songs",
                      res.getDrawable(R.drawable.ic_tab_songs))
                  .setContent(intent);
    tabHost.addTab(spec);

    tabHost.setCurrentTab(2);
}

这就是您在 onCreate 中为TabActivity. 如您所见,它有 3 个活动。您正在做的是使用 JUST ONE 活动并设置内容视图 3 次,这显然是错误的。

那么......如何使它工作?首先,再次阅读教程。其次,为您要显示的每个选项卡创建一个活动。并使用上面的模型将这些活动添加到您的TabHost.

于 2011-01-11T19:30:01.053 回答