У меня есть активность с DrawerLayout
. Я могу открыть ящик двумя разными способами... проведя пальцем от левой области экрана вправо и щелкнув название приложения. У меня НЕ отображается значок приложения, только заголовок. Я реализовал это точно так, как рекомендовал Google здесь: Создание панели навигации: открытие и закрытие со значком приложения
Все функционально, вплоть до открывания и закрывания самого ящика. Однако он не отображает стандартный значок DrawerLayout
, который предполагается использовать. Вместо этого я получаю обычную каретку вверх (выглядит как знак меньше).
Как только я добавляю значок приложения обратно в ActionBar
, он начинает работать, как и ожидалось. Значок макета ящика отображается и анимируется, когда ящик открывается или закрывается. Я попытался удалить значок приложения как в XML-файле стилей, так и программно.
Есть ли способ заставить значок DrawerLayout
работать БЕЗ значка приложения???
ОБНОВЛЕНИЕ: я нашел обходной путь, но это скорее хак, чем решение. Я просто создал прозрачный PNG размером 1x1 пиксель (blank.png) и установил его в качестве значка моего приложения в файле styles.xml. Ниже приведен весь относительный код:
styles.xml
<style name="MyCustomTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/MyCustomActionBar</item>
<item name="android:icon">@drawable/blank</item>
</style>
<style name="MyCustomActionBar" parent="@android:style/Widget.Holo.ActionBar">
<item name="android:displayOptions">showHome|showTitle|homeAsUp</item>
</style>
MainActivity -> onCreate()
this.navDrawerToggle = new ActionBarDrawerToggle
(
this,
this.navDrawerLayout,
R.drawable.icon_nav_drawer,
R.string.nav_drawer_open,
R.string.nav_drawer_closed
)
{
public void onDrawerClosed(View view) {}
public void onDrawerOpened(View drawerView) {}
};
MainActivity -> onPostCreate()
super.onPostCreate(savedInstanceState);
this.navDrawerToggle.syncState();
MainActivity -> onResume()
this.navDrawer.setOnItemClickListener(new DrawerItemClickListener());
this.navDrawerLayout.setDrawerListener(this.navDrawerToggle);
MainActivity -> onPause()
this.navDrawer.setOnItemClickListener(null);
this.navDrawerLayout.setDrawerListener(null);
MainActivity -> onConfigurationChanged(Configuration newConfig)
super.onConfigurationChanged(newConfig);
navDrawerToggle.onConfigurationChanged(newConfig);
MainActivity -> onOptionsItemSelected(элемент MenuItem)
if (this.navDrawerToggle.onOptionsItemSelected(item)) {return true;}
else
{
// A bunch of item click handling happens here...
return true;
}