最近想實現相似QQ的佈局,使用toolbar,tablayout,viewpager,drawerlayout等控件,碰到了一些問題。 java
- 底部按鈕切換以後,每一個頁面頭部佈局不同。使用toolbar的話,須要在每一個fragment中使用單獨的toolbar。這樣又出現一個新的問題,drawerlayout如何操做,drawerlayout須要與activity關聯,而且在每一個fragment中應該只有一個實例。
- toolbar放在fragment中以後,每一個fragment menu不顯示,由於fragment的menu依附於activity(就我我的理解)。
- 將toolbar放在activity中,能夠保證drawer只有一個,可是這樣得控制每一個頁面的toolbar 的佈局。
最近經過截取QQ的佈局,它的頭像是放在framelayout中,在activity中保持一樣的位置,這樣每一個頁面打開我的資料都是同樣的,也就是說activity不使用toolbar。每一個頁面使用
獨立
的toolbar(固然它並無使用這個控件)。可是drawerlayout須要用到toolbar,所以若是使用QQ的方式就不能用drawerlayout.
最後採起的是相似QQ的佈局,去掉drawerlayout,使用其餘側滑菜單。 ide
每一個fragment須要使用toolbar來初始化menu。 佈局
toolbar.inflateMenu(R.menu.menu_fragment_index);
locationItem = toolbar.getMenu().findItem(R.id.action_location).setTitle(App.CITY_NAME);
使用toolbar來設置點擊事件 spa
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
return false;
}
});
去掉fragment 的
onCreateOptionsMenu,
onOptionsItemSelected重載,這種狀況下,實現這兩個方法並不能顯示Menu,並且按手機的menu鍵menu會顯示在底部。
附上QQ的界面: code