【问题标题】:How to implement a nested master detail flow on Android?如何在 Android 上实现嵌套的主从流?
【发布时间】:2016-06-11 01:03:34
【问题描述】:

我有一个列表,在列表中,在列表中,等等。大约有 5 层。

在手机上为每个列表创建 5 个活动很容易,但如果我也想支持平板电脑怎么办?所以我需要使用主细节流。

但是,我似乎找不到任何与嵌套主详细信息流相关的教程或信息。

不管怎样,这里是我所描述的说明:

在平板电脑布局中,我希望屏幕一次移动 2 层。用户可以通过从正确的层中选择一个列表项来前进到下一层。要返回上一层,用户可以点击返回按钮。

知道如何实现这一目标吗?

【问题讨论】:

    标签: android android-layout master-detail


    【解决方案1】:

    在网上搜索了一整天后,我终于找到了解决方案。要获得“嵌套主详细信息流”效果,只需使用带有 FragmentPageAdapter 的 ViewPager。主从流程将如下所示:

    要在用户切换到横向时更改为双面板模式,请在扩展的 FragmentPagerAdapter 类中覆盖以下方法:

    @Override
    public float getPageWidth(int position) {
        DisplayMetrics metrics = getResources().getDisplayMetrics();
        // if the width is greater than 900dp halve the width of the page
        if ((metrics.widthPixels / metrics.density) > 900) {
            return (0.5f);
        }
        return super.getPageWidth(position);
    }
    

    为视图寻呼机提供一个“向上按钮”:

    viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        // This method will be invoked when a new page becomes selected.
        @Override
        public void onPageSelected(int position) {
            if (position == 0) {
                getSupportActionBar().setDisplayHomeAsUpEnabled(false);
            } else {
                getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            }
    
        }
    });
    

    您可以告诉“向上按钮”返回这样的页面(其中 viewpager 是您的活动的成员变量,持有对您的 ViewPager 的引用):

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int position = viewpager.getCurrentItem();
        if (position > 0) viewpager.setCurrentItem(position-1);
        return true;
    }
    

    参考:

    ViewPager with FragmentPagerAdapter

    Display back button on action bar

    Multiple-View ViewPager Options

    How to implement a ViewPager with different Fragments / Layoutsexample github project

    【讨论】:

    • 拜托,你能提供任何演示或更详细地解释你做了什么吗?
    猜你喜欢
    • 2017-04-01
    • 1970-01-01
    • 2016-02-08
    • 2011-05-06
    • 2023-03-29
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    相关资源
    最近更新 更多