使用layout / main.xml文件将选项卡添加到Android应用程序

时间:2011-03-06 00:42:04

标签: android android-layout tabview

我从Android开始,我想在我现有的应用程序中添加标签。

现在我只有一个活动,其中包含XML文件中定义的布局。我现在想添加其他标签。

我查了一下,在Android开发者网站上找到了http://developer.android.com/resources/tutorials/views/hello-tabwidget.html;但是,它不使用XML来定义选项卡的布局。

那么,如何仅使用XML文件为布局轻松添加标签?

提前致谢。

3 个答案:

答案 0 :(得分:4)

  

我查了一下,在Android开发者网站上找到了http://developer.android.com/resources/tutorials/views/hello-tabwidget.html;但是,它不使用XML来定义选项卡的布局。

是的,确实如此。见步骤#4。


<强>更新

谷歌重组了他们的文档并摆脱了本教程。您可以看到使用XML来定义this sample projectTabWidget中的标签。

答案 1 :(得分:3)

我遇到了TabWidget布局没有做到我需要的情况,所以我用ViewFlipper和RadioGroup伪装了它。这样,我可以使用includes定义选项卡的内容(ViewFlipper中的每个视图)(如Farray的答案)。

标签本身就是RadioGroup中的RadioButtons - 你的代码中只有一个OnCheckedChangeListener,并相应地设置ViewFlipper显示的子节点。您可以用XML定义RadioButton布局(包含文本或图像或其他)。

这是一个伪布局,其中标签使用图像:

<LinearLayout>
    <ViewFlipper android:id="@+id/viewFlipper">
        <include android:id="@+id/tab1Content" layout="@layout/tab1Layout" />
        <include android:id="@+id/tab2Content" layout="@layout/tab2Layout" />
        <include android:id="@+id/tab3Content" layout="@layout/tab3Layout" />
    </ViewFlipper>
    <LinearLayout>
        <RadioGroup android:id="@+id/radgroup1" android:orientation="horizontal">
          <RadioButton android:id="@+id/rad1" android:button="@drawable/tab1" />
          <RadioButton android:id="@+id/rad2" android:button="@drawable/tab2" />
          <RadioButton android:id="@+id/rad3" android:button="@drawable/tab3" />
        </RadioGroup>
    </LinearLayout>
</LinearLayout>

这是听众:

    private OnCheckedChangeListener onRadioButtonCheckedChanged = new OnCheckedChangeListener(){
    public void onCheckedChanged(RadioGroup group, int checkedId)
    {
        switch(checkedId)
        {
            case(R.id.rad2):
                viewFlipper.setDisplayedChild(1);
            break;
            case(R.id.rad3):
                viewFlipper.setDisplayedChild(2);
            break;
            default:
                viewFlipper.setDisplayedChild(0);
            break;
        }
    }
};

答案 2 :(得分:1)

TabWidget实现非常严格 - 您无法对布局进行太多控制。

如果您想创建自己的自定义标签,最好的办法是创建一个自定义布局,并从您希望拥有这些“标签”的活动中调用它。您可以使用<include layout="@layout/my_tab_layout" />以XML格式调用可重用布局,然后在可重用的类中编写自己的初始化代码。