打开抽屉时操作栏图标消失
Action Bar icons disappear when the drawer is opened
我是 Android 的新手。我正在尝试在我的操作栏中添加 2 个图标。所以,我用 getSupportActionBar().setIcon()
来做到这一点。这是我使用的代码 onCreate()
.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mNavigationDrawerFragment = (NavigationDrawerFragment)
getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
mTitle = getTitle();
// Set up the drawer.
mNavigationDrawerFragment
.setUp(R.id.navigation_drawer,(DrawerLayout) findViewById(R.id.drawer_layout));
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#FFA500"))); // change the color of header
mTitle = mDrawerTitle = getTitle();
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
// enabling action bar app icon and behaving it as toggle button
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,R.drawable.ic_menu, R.string.app_name,R.string.app_name){
public void onDrawerClosed(View view) {
getSupportActionBar().setTitle(mTitle);
// calling onPrepareOptionsMenu() to show action bar icons
invalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
getSupportActionBar().setTitle(mDrawerTitle);
// calling onPrepareOptionsMenu() to hide action bar icons
invalidateOptionsMenu(); }
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
getSupportActionBar().setIcon(R.drawable.ic_deals);
getSupportActionBar().setIcon(R.drawable.ic_loc);
}
当我打开时,抽屉图标从操作栏中消失。 Bu,当我重新打开它时,图标又出现了。
有人知道这里发生了什么吗?
提前致谢。 :)
您可以尝试关注此 Link。
检查一下并告诉我它是否有效。
或者您也可以这样做。
创建menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/next"
android:icon="@drawable/ic_next"
android:title="@string/next" />
<item android:id="@+id/previous"
android:icon="@drawable/ic_previous"
android:title="@string/previous" />
<item android:id="@+id/list"
android:icon="@drawable/ic_list"
android:title="@string/list" />
</menu>
现在您可以在菜单上设置图标了
现在在 CreateOptionMenu 中
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
并访问该菜单。
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.next:
Toast.makeText(this, "You have chosen the " + getResources().getString(R.string.next) + " menu option",
Toast.LENGTH_SHORT).show();
return true;
…
default:
return super.onOptionsItemSelected(item);
}
从 onDrawerClosed() 和 onDrawerOpened() 中删除 invalidateOptionsMenu() 并查看打开抽屉时图标是否消失。
由于您没有post onPrepareOptionsMenu() 方法,我想这就是问题所在。 invalidateOptionsMenu() 调用 onPrepareOptionsMenu(),我想这就是打开抽屉时隐藏图标的代码。
P.S:post作为单独的答案,因为我无法发表评论。
我是 Android 的新手。我正在尝试在我的操作栏中添加 2 个图标。所以,我用 getSupportActionBar().setIcon()
来做到这一点。这是我使用的代码 onCreate()
.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mNavigationDrawerFragment = (NavigationDrawerFragment)
getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
mTitle = getTitle();
// Set up the drawer.
mNavigationDrawerFragment
.setUp(R.id.navigation_drawer,(DrawerLayout) findViewById(R.id.drawer_layout));
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#FFA500"))); // change the color of header
mTitle = mDrawerTitle = getTitle();
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
// enabling action bar app icon and behaving it as toggle button
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,R.drawable.ic_menu, R.string.app_name,R.string.app_name){
public void onDrawerClosed(View view) {
getSupportActionBar().setTitle(mTitle);
// calling onPrepareOptionsMenu() to show action bar icons
invalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
getSupportActionBar().setTitle(mDrawerTitle);
// calling onPrepareOptionsMenu() to hide action bar icons
invalidateOptionsMenu(); }
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
getSupportActionBar().setIcon(R.drawable.ic_deals);
getSupportActionBar().setIcon(R.drawable.ic_loc);
}
当我打开时,抽屉图标从操作栏中消失。 Bu,当我重新打开它时,图标又出现了。
有人知道这里发生了什么吗?
提前致谢。 :)
您可以尝试关注此 Link。
检查一下并告诉我它是否有效。
或者您也可以这样做。 创建menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/next"
android:icon="@drawable/ic_next"
android:title="@string/next" />
<item android:id="@+id/previous"
android:icon="@drawable/ic_previous"
android:title="@string/previous" />
<item android:id="@+id/list"
android:icon="@drawable/ic_list"
android:title="@string/list" />
</menu>
现在您可以在菜单上设置图标了
现在在 CreateOptionMenu 中
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
并访问该菜单。
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.next:
Toast.makeText(this, "You have chosen the " + getResources().getString(R.string.next) + " menu option",
Toast.LENGTH_SHORT).show();
return true;
…
default:
return super.onOptionsItemSelected(item);
}
从 onDrawerClosed() 和 onDrawerOpened() 中删除 invalidateOptionsMenu() 并查看打开抽屉时图标是否消失。
由于您没有post onPrepareOptionsMenu() 方法,我想这就是问题所在。 invalidateOptionsMenu() 调用 onPrepareOptionsMenu(),我想这就是打开抽屉时隐藏图标的代码。
P.S:post作为单独的答案,因为我无法发表评论。