![](/img/trans.png)
[英]Android: how to show icon in ActionBar but not in the Options Menu?
[英]How to show menu icon in Actionbar?
我已將導航抽屜添加到我的主要活動中。 現在,我想在操作欄標題旁邊有一個菜單圖標。 所以我做了以下事情:
mDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.drawer_open, R.string.drawer_close)
{
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
invalidateOptionsMenu();
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
invalidateOptionsMenu();
}
};
mDrawerToggle.setDrawerIndicatorEnabled(false);
mDrawerToggle.setHomeAsUpIndicator(R.drawable.ic_drawer);
mDrawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (dlDrawer.isDrawerVisible(GravityCompat.START)) {
dlDrawer.closeDrawer(GravityCompat.START);
} else {
dlDrawer.openDrawer(GravityCompat.START);
}
}
});
mDrawerToggle.syncState();
我也有:
getActionBar().setDisplayShowHomeEnabled(true);
getActionBar().setHomeButtonEnabled(true);
我不能使用getActionBar().setHomeAsUpIndicator(R.drawable.ic_drawer);
因為我的最低API級別是16。
這是菜單的xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" tools:context="com.app.activities.MainActivity">
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="200" app:showAsAction="never" />
</menu>
但是,使用上述代碼,菜單圖標不會顯示在應用程序圖標旁邊。 而且,點擊應用程序圖標完全沒有反應。
我需要添加什么代碼才能顯示菜單圖標,並且活動對點擊應用程序圖標有反應?
編輯
為了使應用程序圖標單擊以工作,我在onOptionsItemSelected
添加了以下代碼:
int id = item.getItemId();
if (id == android.R.id.home) {
if (dlDrawer.isDrawerVisible(GravityCompat.START)) {
dlDrawer.closeDrawer(GravityCompat.START);
} else {
dlDrawer.openDrawer(GravityCompat.START);
}
}
但是,菜單圖標仍未顯示。
如下更改代碼
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.ic_drawer, //nav menu toggle icon
R.string.app_name, // nav drawer open - description for accessibility
R.string.app_name // nav drawer close - description for accessibility
){
public void onDrawerClosed(View view) {
getActionBar().setTitle(mTitle);
// calling onPrepareOptionsMenu() to show action bar icons
invalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
getActionBar().setTitle(mDrawerTitle);
// calling onPrepareOptionsMenu() to hide action bar icons
invalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
用於選項菜單
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// toggle nav drawer on selecting action bar app icon/title
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
// Handle action bar actions click
switch (item.getItemId()) {
case R.id.action_settings:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
/***
* Called when invalidateOptionsMenu() is triggered
*/
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// if nav drawer is opened, hide the action items
boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
return super.onPrepareOptionsMenu(menu);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.