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+)
我找到了一种让指标显示的方法: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()
包括在内,不需要调用。