Значок навигационного ящика не отображается (панель действий Шерлока)
У меня есть панель навигации, работающая с панелью инструментов sherlock, но мне не удается получить значок 3 строки (например, gmail) вместо обычной кнопки "<". Вот мой код ic_drawer - это значок 3 строки, который gmail использует
getSupportActionBar().setIcon(R.drawable.myIcon);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawer,
R.drawable.ic_drawer, R.string.menu_open, R.string.menu_close) {
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
}
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
}
};
Ответы
Ответ 1
Это решение сработало для меня и показало значок ящика по умолчанию во всей версии.
Добавьте SherlockNavigationDrawer
библиотеку отсюда https://github.com/nicolasjafelle/SherlockNavigationDrawer к вашему проекту.
И измените свой код, как показано ниже:
SherlockActionBarDrawerToggle mDrawerToggle = new SherlockActionBarDrawerToggle(this,mDrawerLayout,
R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) {
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
}
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(true);
Ответ 2
Пробовали ли вы реализовать метод:
mDrawerToggle.syncState();
В прошлом это работало для меня.
Ответ 3
Хотя я догадываюсь, что вы, должно быть, сработали, просто хотел отправить ответ:
Измените код на следующее:
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawer,
R.drawable.ic_drawer, R.string.menu_open, R.string.menu_close) {
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
}
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
getSupportActionBar().setIcon(R.drawable.myIcon);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(true);
По существу, параметры ActionBar, которые вы устанавливаете в коде, должны быть установлены после завершения DrawerToggle, а не раньше.
Ответ 4
Сначала вы можете посмотреть этот. Существует один ответ: "Вы можете изменить значок в теме
<item name="android:homeAsUpIndicator">@drawable/action_arrow</item>
Но я думаю, что вы хотите реализовать Навигационный ящик, поэтому читайте об этом.
Ответ 5
Что вы можете сделать, так это создать стиль, как показано ниже:
<style name="AppTheme" parent="Your Theme name">
<item name="homeAsUpIndicator">@drawable/ic_drawer</item>
</style>
И в манифесте Android примените эту тему следующим образом:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
</application>
Это решит проблему, получив значок 3 строки.
Ответ 6
Вы добавили переключатель в свой ящик?
mDrawerLayout.setDrawerListener(mDrawerToggle);
Ответ 7
Это происходит, когда вы запускаете свое приложение в Android < 3, даже приложения Google страдают от этого тоже.
Но есть проект, чем решить это:
https://github.com/nicolasjafelle/SherlockNavigationDrawer
Ответ 8
Я вставляю это, и он работает.
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
Ответ 9
@zudo1337 метод решил мою проблему.
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
Ответ 10
Я добавил эту строку перед вызовом setDrawerListener.
mDrawerLayout.post(new Runnable() {
@Override public void run() {
mDrawerToggle.syncState();
}
});
Надеемся, что это устранит проблему на более низких устройствах.
Ответ 11
Возможно, это сработает...
in onCreateOptionMenu раздувает ваш макет меню
getSupportMenuInflater(). inflate (R.menu.action_bar_menu, menu);