Невозможно изменить значок 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 */
    ) 

Это должно работать сейчас

Другие вопросы по тегам