Невозможно изменить значок DrawerLayout, даже если в ActionBarDrawerToggle был установлен значок
Я только что создал шаблонный проект в Android Studio и не изменил строку кода (шаблонный проект DrawerLayout).
Тем не менее, я обнаружил, что нажатый значок для обозначения фрагмента навигации всегда является левой стрелкой, хотя в коде он устанавливает значок на другой.
Вот код для создания ActionBarDrawerToggle:
mDrawerToggle = new ActionBarDrawerToggle(
getActivity(), /* host Activity */
mDrawerLayout, /* DrawerLayout object */
R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */
R.string.navigation_drawer_open, /* "open drawer" description for accessibility */
R.string.navigation_drawer_close /* "close drawer" description for accessibility */
)
вот png файл для ic_drawer
Как изменить значок DrawerLayout?
2 ответа
У меня была такая же проблема, я всегда видел значок стрелки влево. Я решил таким образом:
Я заметил, что класс android.support.v4.app.ActionBarDrawerToggle устарел, после некоторых ответов и из developer.android.com, в моем классе NavigationDrawerFragment, который я использовал
mDrawerToggle = new ActionBarDrawerToggle( getActivity(),
mDrawerLayout,
R.string.navigation_drawer_open,
R.string.navigation_drawer_close
) { ... }
Теперь все в порядке, значок выполняет переход к стрелке только тогда, когда появляется окно навигации.
Добавляем решение, данное Anchor. Мне удалось заставить мою работу изменить этот импорт
import android.support.v4.app.ActionBarDrawerToggle;
в
import android.support.v7.app.ActionBarDrawerToggle;
В результате вы получите сообщение об ошибке в конструкторе ActionBarDrawerToggle. Удалите R.drawable.ic_drawer, чтобы он стал:
mDrawerToggle = new ActionBarDrawerToggle(
getActivity(), /* host Activity */
mDrawerLayout, /* DrawerLayout object */
R.string.navigation_drawer_open, /* "open drawer" description for accessibility */
R.string.navigation_drawer_close /* "close drawer" description for accessibility */
)
Это должно работать сейчас