Android-DeveloperとHpTermは、正しい方向で私を助けてくれました。
- これは確かにNavigationDrawer固有のものであることを指摘しています(Googleの例のようにすでに使用していました)
- アイコンの場所を伝える
ic_drawer.png
(→ Android Asset Studio )
残念ながら、以下のように ActionBarDrawerToggle を作成するだけでは十分ではないようです。少なくとも私の Nexus 7 (API 18) テスト デバイスでは。
drawerToggle = new ActionBarDrawerToggle(this,
drawerLayout,
R.drawable.ic_navigation_drawer,
R.string.side_menu_open,
R.string.side_menu_closed) {
// ...
};
部分的な解決策 (API レベル 18+)
ただし、インジケーターを表示させる方法が 1 つ見つかりましたsetHomeAsUpIndicator()
。欠点: そのメソッドは API レベル 18 で追加されました。
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...
getActionBar().setDisplayHomeAsUpEnabled(true); // also required
if (Build.VERSION.SDK_INT >= 18) {
getActionBar().setHomeAsUpIndicator(
getResources().getDrawable(R.drawable.ic_navigation_drawer));
}
}
APIレベル14から17でこれを(私の場合)どのように機能させるのですか?
4.1.2 (API 16) デバイスでic_drawer
アイコンが表示されないことを確認しました。setDisplayHomeAsUpEnabled(true)
通常の「ホーム」アイコン (左向きの小さな矢印) を取得すると、アプリ アイコンに残されたスペースは空白のままになります。
最終的解決
Android-Developer's answerの編集版を使用して動作するようになりました。
非常に興味深いことに、ActionBarDrawerToggle の初期化コードに欠けていたのは次のとおりです。
// Defer code dependent on restoration of previous instance state.
drawerLayout.post(new Runnable() {
@Override
public void run() {
mDrawerToggle.syncState();
}
});
それが含まれていれば、電話setHomeAsUpIndicator()
は必要ありません。