【问题标题】:How to use a ListView and a ViewFlipper to navigate user in an Android app?如何使用 ListView 和 ViewFlipper 在 Android 应用中导航用户?
【发布时间】:2010-05-02 06:57:27
【问题描述】:

我想为我的应用设置一些类似菜单的导航器。

主页面有一个listView,它包含两个item,点击每一个都会用ViewFlipper显示它的子view,如果用户点击返回按钮,他会再次回到主页。

问题是怎么做的,我只能用ViewFlipper翻到下一屏或者上一屏,这里怎么管理这些子视图呢?如何将它们放入我的布局 xml 文件中?

【问题讨论】:

    标签: android layout menu navigation viewflipper


    【解决方案1】:

    下面是一种伪方式。

    //在OnCreate中,给你的listview添加一个点击监听,让view翻转到下一个view。

    viewflipper = (ViewFlipper) findViewById(R.id.viewflipper);
    listview = (ListView) findViewById(R.id.listview);
    
    
    listview.setOnItemClickListener(new OnItemClickListener(){
      public void onItemClick(AdapterView<?> a, View v, int position, long id) {
         viewflipper.showNext();
    
    });
    

    // 覆盖你的 Activty 中的 onKeyDown 来处理后退按钮的点击。

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            if(viewflipper.getVisibleChild() != 0){
               viewflipper.showPrevious();
               return true;
            }
        }
        return super.onKeyDown(keyCode, event);
    }
    

    // viewflipper的xml,列表视图作为“第一页”,简单的文本视图作为“第二页”

    <ViewFlipper android:id="@+id/viewflipper" 
            android:layout_width="fill_parent" 
            android:layout_height="fill_parent" 
            > 
            <ListView android:id="@+id/listview" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content" 
            /> 
            <TextView android:id="@+id/secondview" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content" 
                android:text="This is the second view" 
            /> 
    </ViewFlipper> 
    

    【讨论】:

    • 您链接到的那个特定示例有点旧(2008 年 8 月),更不用说从最初的 AndroidGuys 帖子中抄袭了。以下是该帖子中两个示例的链接,这些示例已保持最新状态:github.com/commonsguy/cw-android/tree/master/Fancy/Flipper1github.com/commonsguy/cw-android/tree/master/Fancy/Flipper2
    • 感谢您的回答。但我需要的是有点复杂。因为导航并不总是线性的,例如,HOME-> A|B|C -> if A selected -> a1|a2|, if B selected -> b1|b2。如果我有所有预定义的 A|B|C|a1|a2|b1|b2 视图,我如何将所有这些视图放入 ViewFlipper,或者如果其中一些像 a2、b1 是通过从互联网获取数据动态创建的,那么可以那我呢?
    • 如果我理解正确,您可以在 viewflipper 中添加 2 个列表视图。第一个显示 A、B、C 的列表视图,当您单击任何翻转到第二个列表视图及其子项 a1、a2、a3 ... 如果单击 B 时,您可以使用相同的列表视图显示 b1、b2用于a1,a2,a3等......
    • getVisibleChild 不是 ViewFlipper 的方法
    • 改用viewFlipper.getCurrentView().getId() != 0
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多