经过一整天的互联网搜索,我终于找到了解决方案。要获得“嵌套主详细信息流”效果,只需使用 ViewPager 和 FragmentPageAdapter 即可。主细节流程将如下所示:
要在用户切换到横向时更改为两个面板模式,请在扩展的 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 与 FragmentPagerAdapter https://github.com/codepath/android_guides/wiki/ViewPager-with-FragmentPagerAdapter
在操作栏上显示后退按钮 https://stackoverflow.com/questions/15686555/display-back-button-on-action-bar
多视图 ViewPager 选项 https://commonsware.com/blog/2012/08/20/multiple-view-viewpager-options.html
如何使用不同的片段/布局实现 ViewPager https://stackoverflow.com/questions/18413309/how-to-implement-a-viewpager-with-different-fragments-layouts and 示例 github 项目 https://github.com/KENJU/ViewPagersWithMultipleFragmentsSample