我有一個列表,列表內,列表內,等等。大約有5層。如何在Android上實現嵌套的主細節流?
很容易爲手機上的每個列表創建5個活動,但如果我想支持平板電腦,該怎麼辦?所以我需要使用主細節流程。
但是,我似乎無法找到關於嵌套主細節流的任何教程或信息。
無論如何,這裏是一個什麼我描述一個例證:
在平板電腦的佈局,我想屏幕在同一時間2層轉移。用戶可以通過從右側列表中選擇一個列表項目來進入下一個層次。要返回到上一層,用戶可以點擊後退按鈕。
任何想法,我可以如何實現這一目標?
我有一個列表,列表內,列表內,等等。大約有5層。如何在Android上實現嵌套的主細節流?
很容易爲手機上的每個列表創建5個活動,但如果我想支持平板電腦,該怎麼辦?所以我需要使用主細節流程。
但是,我似乎無法找到關於嵌套主細節流的任何教程或信息。
無論如何,這裏是一個什麼我描述一個例證:
在平板電腦的佈局,我想屏幕在同一時間2層轉移。用戶可以通過從右側列表中選擇一個列表項目來進入下一個層次。要返回到上一層,用戶可以點擊後退按鈕。
任何想法,我可以如何實現這一目標?
經過整整一天的互聯網搜索後,我終於找到了解決方案。要獲得「嵌套主站詳細信息流」效果,只需使用帶有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/Layouts和example github project