对于我的应用,我使用的是一个NavigationDrawer菜单,并且它运行正常。此时我已经创建了自定义操作栏布局,只是建议在操作栏中设置一个图标。 问题是,在某些设备中,NavigationDrawer的图标显然没有显示我的自定义ActionBar布局,但它显示我是否不应用我的自定义ActionBar布局。 在我的Android 4.4.2上,它运行正常。我已尝试过4.1.2和4.3以及未显示的图标。
这是我的ActionBar布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ActionBarWrapper"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical">
<ImageView
android:id="@+id/actionbar_centered_icon"
android:layout_width="150dp"
android:layout_height="wrap_content" />
</RelativeLayout>
这里有我的Activity上的行,它们为操作栏设置我的自定义布局,以及实现navigationDrawer的代码:
getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getActionBar().setCustomView(R.layout.actionbar_centered_icon);
ImageView actionBarCenteredIcon = (ImageView) findViewById(R.id.actionbar_centered_icon);
actionBarCenteredIcon.setImageResource(R.drawable.vidytape_text);
// Hide App icon
// getActionBar().setDisplayHomeAsUpEnabled(false);
getActionBar().setDisplayHomeAsUpEnabled(true);
// Enable user to open menu from the button on action bar
getActionBar().setHomeButtonEnabled(true);
// Remove app title from action bar
getActionBar().setDisplayShowTitleEnabled(false);
// Set menu ic drawer as icon
/*
* if (lang.equalsIgnoreCase("deutsch")){
* getActionBar().setIcon(R.drawable.label_home_de); } else {
*/
getActionBar().setIcon(R.drawable.vidytape_text);
// }
ColorDrawable actionBarColor = new ColorDrawable(
Color.parseColor("#3498db"));
getActionBar().setBackgroundDrawable(actionBarColor);
// Menu behavior -- Toggle
mDrawerToggle = new ActionBarDrawerToggle((Activity) this,
mDrawerLayout, R.drawable.ic_drawer, R.string.drawer_open,
R.string.drawer_close) {
public void onDrawerClosed(View view) {
getActionBar().setTitle(mTitle);
invalidateOptionsMenu(); // creates call to
// onPrepareOptionsMenu()
}
public void onDrawerOpened(View drawerView) {
getActionBar().setTitle(mDrawerTitle);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
//Close keyboard
viewsSearchField = (EditText) findViewById(R.id.views_search);
nicesSearchField = (EditText) findViewById(R.id.nices_search);
newestSearchField = (EditText) findViewById(R.id.newest_search);
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(viewsSearchField.getWindowToken(), 0);
imm.hideSoftInputFromWindow(nicesSearchField.getWindowToken(), 0);
imm.hideSoftInputFromWindow(newestSearchField.getWindowToken(), 0);
}
}; // End of menu behavior
mDrawerLayout.setDrawerListener(mDrawerToggle);
任何人都知道这里可能出现什么问题?
我找到了解决方案
使其适用于SDK&lt; 19和19也是,我添加了以下两行代码:
getActionBar().setDisplayShowHomeEnabled(true);
ColorDrawable actionBarIconColor = new ColorDrawable(Color.TRANSPARENT);
getActionBar().setIcon(actionBarIconColor);