我从Android开始,我想在我现有的应用程序中添加标签。
现在我只有一个活动,其中包含XML文件中定义的布局。我现在想添加其他标签。
我查了一下,在Android开发者网站上找到了http://developer.android.com/resources/tutorials/views/hello-tabwidget.html;但是,它不使用XML来定义选项卡的布局。
那么,如何仅使用XML文件为布局轻松添加标签?
提前致谢。
答案 0 :(得分:4)
我查了一下,在Android开发者网站上找到了http://developer.android.com/resources/tutorials/views/hello-tabwidget.html;但是,它不使用XML来定义选项卡的布局。
是的,确实如此。见步骤#4。
<强>更新强>
谷歌重组了他们的文档并摆脱了本教程。您可以看到使用XML来定义this sample project中TabWidget
中的标签。
答案 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格式调用可重用布局,然后在可重用的类中编写自己的初始化代码。