我在列表中有一个列表,在列表中,等等。大约有5层。
在手机上为每个列表创建5个活动很容易,但如果我也想支持平板电脑怎么办?所以我需要使用主细节流程。
但是,我似乎无法找到与嵌套主详细信息流关系的任何教程或信息。
无论如何,这里是我所描述的例子:
在平板电脑布局中,我希望屏幕一次移动2层。通过从右侧层中选择列表项,用户可以前进到下一层。要返回上一层,用户可以点击后退按钮。
知道如何实现这个目标吗?
答案 0 :(得分:0)
经过一整天的互联网搜索,我终于找到了解决方案。获得"嵌套主数据流程"效果只需使用带有FragmentPageAdapter的ViewPager。 Master Detail Flow将如下所示:
要在用户切换到横向时更改为双面板模式,请在扩展的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 / Layouts和example github project