我正在构建体育团队应用程序,并创建了自己的标签栏,而不是使用Google的标签代码。我喜欢今日美国应用程序的工作方式。 USA Today App 当您在不同类别的新闻中进行选择时,只有下面的视图发生变化,它才会切换到全新的屏幕/活动。他们是怎么做到的?
答案 0 :(得分:2)
从屏幕截图中看,Gallery
视图中包含不同的类别。通过setOnItemSelectedListener
,您可以在用户选择其他项目时注册回调。然后,您可以以编程方式更改主View
或使用新数据填充它。
例如,假设您的布局中定义了ViewFlipper
和Gallery
,Gallery
中的项目顺序与Views
的顺序相对应在ViewFlipper
。在您的活动中,您使用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) {
}
});
答案 1 :(得分:2)
您可以使用ActivityGroup在当前选项卡中的不同视图之间切换。这是一个演示。 http://androidgenuine.com/
答案 2 :(得分:0)
我不知道他们是如何在他们的应用中实现该功能的。它们很可能只是改变View树,即以编程方式将一个View替换为另一个View。最大的问题是你通常需要大量代码来支持可以在特定Activity中显示的每个视图 - 用于加载数据,处理用户点击等的代码。你可以在里面放入大量代码自定义View类,而不是在Activity中。如果在“视图”中放置“业务逻辑”似乎有悖常理,那么我建议使用Fragments。然后可以使用FragmentTransactions处理更改标签。这些是在Android 3.0中添加的,但有一个compatibility package让你在Android 1.6 +上使用它们。