Android:在选项卡中切换视图而不离开当前选项卡。像今日美国应用程序

时间:2011-06-14 23:07:44

标签: android android-layout android-widget

我正在构建体育团队应用程序,并创建了自己的标签栏,而不是使用Google的标签代码。我喜欢今日美国应用程序的工作方式。 USA Today App 当您在不同类别的新闻中进行选择时,只有下面的视图发生变化,它才会切换到全新的屏幕/活动。他们是怎么做到的?

3 个答案:

答案 0 :(得分:2)

从屏幕截图中看,Gallery视图中包含不同的类别。通过setOnItemSelectedListener,您可以在用户选择其他项目时注册回调。然后,您可以以编程方式更改主View或使用新数据填充它。

例如,假设您的布局中定义了ViewFlipperGalleryGallery中的项目顺序与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/

Complete Demo of ActivityGroup

答案 2 :(得分:0)

我不知道他们是如何在他们的应用中实现该功能的。它们很可能只是改变View树,即以编程方式将一个View替换为另一个View。最大的问题是你通常需要大量代码来支持可以在特定Activity中显示的每个视图 - 用于加载数据,处理用户点击等的代码。你可以在里面放入大量代码自定义View类,而不是在Activity中。如果在“视图”中放置“业务逻辑”似乎有悖常理,那么我建议使用Fragments。然后可以使用FragmentTransactions处理更改标签。这些是在Android 3.0中添加的,但有一个compatibility package让你在Android 1.6 +上使用它们。