使用layout/main.xml 文件将选项卡添加到Android 应用程序
我从 Android 开始,想向现有应用程序添加选项卡。
现在我只有一项活动,其布局是在 XML 文件中定义的。我现在想添加其他选项卡。
我查了一下,发现 http://developer.android.com/ Android 开发者网站上的 resources/tutorials/views/hello-tabwidget.html;但是,它不使用 XML 来定义选项卡的布局。
那么,如何使用仅用于布局的 XML 文件轻松添加选项卡呢?
提前致谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是的,确实如此。请参阅步骤#4。
更新
Google 重新组织了他们的文档并删除了本教程。您可以在 TabWidget 中的选项卡“nofollow">此示例项目。
Yes, it does. See step #4.
UPDATE
Google reorganized their documentation and got rid of this tutorial. You can see the use of XML for defining the tabs in
TabWidget
in this sample project.我遇到过 TabWidget 布局不能满足我的需要的情况,所以我用 ViewFlipper 和 RadioGroup 来伪造它。这样,我可以使用 include 定义选项卡的内容(ViewFlipper 中的每个视图)(如 Farray 的答案)。
选项卡本身是 RadioGroup 中的 RadioButton - 您只需在代码中添加一个 OnCheckedChangeListener 并相应地设置 ViewFlipper 的显示子项即可。您可以在 XML 中定义 RadioButton 布局(使用文本或图像或其他内容)。
这是一个伪布局,其中选项卡使用图像:
这是监听器:
I've run into a situation where the TabWidget layout didn't do what I needed, so I faked it up with a ViewFlipper and a RadioGroup. That way, I could define the content of the tabs (each view in the ViewFlipper) using includes (like in Farray's answer).
The tabs themselves were the RadioButtons in the RadioGroup - you just have an OnCheckedChangeListener in your code and set the ViewFlipper's displayed child accordingly. You can define the RadioButton layout in XML (with text or images or whatever).
Here's a pseudo-layout where the tabs use images:
And here's the listener:
TabWidget
实现非常严格——您对布局没有太多控制权。如果您想创建自己的自定义选项卡,最好的选择是创建自定义布局并从您想要拥有这些“选项卡”的活动中调用它。您可以使用
调用 XML 中的可重用布局,然后在可重用类中编写自己的初始化代码。The
TabWidget
implementation is pretty rigid -- you don't have much control over layout.If you want to create your own custom tabs, your best bet is to create a custom layout and call it from the activities that you want to have these "tabs". You can call reusable layouts in XML with
<include layout="@layout/my_tab_layout" />
and then write your own initialization code in a reusable class.