NavigationDrawerとActionBarについて質問させてください。
NavigationDrawerを設定するとActionBarの左端に表示されるタップするとドロワーが開く三本線アイコンについてです。
例えば、下記にあるようにmain.xmlの<FrameLayout>に、最初はFragment01を表示し、そのFragment01内のボタンを押すと次のFragment02が表示されるようにしたとします。
そのときMainActivityには、NavigationDrawerがお決まりのコードで設定されてあるとします。
ここで、トップレベル画面のFragment01が表示されているときは三本線アイコンでいいのですが、Fragment02が表示されたときは、
通常のActionBarのように三角マーク(<)にして、それをタップするとFragment01に戻るようにするにはどのようにしたらいいのでしょうか?
それぞれActivityを分け、Fragment01が表示されるのをMainActivity、Fragment02が表示されるのを仮にNextActivityとして、
NextActivityからは通常のActionBarの設定にすると可能なのですが、一瞬画面が入れ替わるので、ActionBar部分も一瞬入れ替わると思うのです。
ここで実現したいのは、ActionBar部分はまったくそのままで、Fragment01のときは三本線アイコン、Fragment02のときは三角マークアイコン(<)のように、
左端のアイコン部分だけが入れ替わり(もちろん<FrameLayout>部分の内容も入れ替わる)、また三角マークをタップするとFragment01に戻るというアクションです。
重複になりますが、GooglePlayのアプリがまさにそうで、最初はNavigationDrawerが設定された三本線アイコンですが、何かをクリックして画面の階層を下げると、
今回実現したいような感じで、内容の変更と共に、ActionBarはそのままでアイコン部分のみが三角マークに変更されます。
まだ経験が浅いので説明不足になっているかもしれませんが、どなたかおわかりになる方がいらっしゃれば教えていただけないでしょうか。
何卒、宜しくお願い致します。
●mainActivity.java
--------------------------------------------------------------------------------------
drawerLayout = (DrawerLayout) findViewById(R.id.layout_drawer);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
mToggle = new ActionBarDrawerToggle(this, drawerLayout,
R.drawable.ic_drawer,
R.string.app_name,
R.string.app_name) {
@Override
public void onDrawerClosed(View drawerView) {
・・・・・・・・・・
}
@Override
public void onDrawerOpened(View drawerView) {
・・・・・・・・・・
}
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
super.onDrawerSlide(drawerView, slideOffset);
・・・・・・・・・・
}
@Override
public void onDrawerStateChanged(int newState) {
・・・・・・・・・・
}
};
drawerLayout.setDrawerListener(mToggle);
・・・・・・・・・・
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mToggle.onConfigurationChanged(newConfig);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mToggle.onOptionsItemSelected(item)) {
return true;
}
・・・・・・・・・・
}
--------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------