2016-06-11 45 views
1

我有一個列表,列表內,列表內,等等。大約有5層。如何在Android上實現嵌套的主細節流?

很容易爲手機上的每個列表創建5個活動,但如果我想支持平板電腦,該怎麼辦?所以我需要使用主細節流程。

但是,我似乎無法找到關於嵌套主細節流的任何教程或信息。

無論如何,這裏是一個什麼我描述一個例證:

enter image description here

在平板電腦的佈局,我想屏幕在同一時間2層轉移。用戶可以通過從右側列表中選擇一個列表項目來進入下一個層次。要返回到上一層,用戶可以點擊後退按鈕。

任何想法,我可以如何實現這一目標?

回答

0

經過整整一天的互聯網搜索後,我終於找到了解決方案。要獲得「嵌套主站詳細信息流」效果,只需使用帶有FragmentPageAdapter的ViewPager。大師詳細流程是這樣的:

enter image description here

要更改爲雙面板模式,當用戶切換到風景,你的延伸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