问题描述
|
我正在开发运动队应用,正在创建自己的标签栏,而不是使用Google的标签代码。我喜欢《今日美国》应用程序的工作方式。
今日美国应用
当您在不同类别的新闻中进行选择时,只有下面的视图会更改,它不会切换到全新的屏幕/活动。他们是如何做到的?
解决方法
从屏幕截图中可以看到,不同的类别包含在“ 0”视图中。通过
setOnItemSelectedListener
,您可以在用户选择其他项目时注册回叫。然后您可以以编程方式更改主ѭ2或用新数据填充它。
例如,假设您在布局中定义了ViewFlipper
和Gallery
,其中Gallery
中项目的顺序与ViewFlipper
中Views
的顺序相对应。在“活动”中,您使用findViewById
获得对那些Views
(鳍和画廊变量)的引用。然后,您可以执行以下操作:
myGallery.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent,View view,int position,long id) {
flipper.setDisplayedChild(position);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
, 您可以使用ActivityGroup在当前选项卡的不同视图之间切换。这是一个演示。 http://androidgenuine.com/
ActivityGroup的完整演示
, 我不知道他们如何在自己的应用中实现该功能。它们很可能只是改变视图树,即以编程方式将一个视图替换为另一个视图。最大的问题是,您通常需要大量代码来支持可能在特定活动中显示的每个视图-用于加载数据,处理用户点击等的代码。您可以在其中放入很多代码自定义View类,而不是将其包含在Activity中。如果在视图中放置“业务逻辑”似乎是错误的,那么我建议使用片段。然后,可以使用FragmentTransactions处理更改的选项卡。这些是在Android 3.0中添加的,但是有一个兼容性软件包,可以让您在Android 1.6+上使用它们。