2

В моем приложении используется библиотека ActionBarCompat, а также библиотека поддержки NavigationDrawer. Я использую ActionBarDrawerToggle appcompat v7, чтобы получить ящик. Есть вид пользовательского поиска на ActionBar. Как это:Индикатор выдвижного ящика на ActionBar compat v7 21

enter image description here

Но индикатор ящика неправильно показывает, не показывает стрелку назад, когда вид поиска действия расширяется; enter image description here

Я хочу, чтобы показать, как приложения PlayStore:

enter image description here

Как я могу это сделать? Заранее спасибо.

ответ

1

У вас есть эта проблема, потому что вы задали (android:)homeAsUpIndicator в своей теме. Удалите этот атрибут, чтобы решить вашу проблему.

0

Это не стрела от ActionBarDrawerToggle. Я думаю, что Google использует Toolbar, как и в приложении google io. В событии OnClick они просто меняют значок навигации на панели инструментов с toolbar.setNavigationIcon(R.id.ic_up). И R.id.ic_up - это обычная стрелка для рисования.

+0

Спасибо. Я попробую. –

+0

Я попробовал. Вам не нужно вызывать 'toolbar.setNavigationIcon (R.id.ic_up)'. Это происходит по умолчанию. –

+0

Его странно, потому что если вы используете новую AppCompat lib и тему, ActionBar на самом деле Панель инструментов – Wayne

3

Это простое и быстрое решение.

Сначала вы должны знать, что андроид.support.v4.app.ActionBarDrawerToggle устарел. Вы должны заменить это с помощью android.support.v7.app.ActionBarDrawerToggle.

Вот пример, показывающий то же самое.

DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
 
    ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(
 
     this, mDrawerLayout, mToolbar, 
 
     R.string.navigation_drawer_open, R.string.navigation_drawer_close 
 
    ); 
 
    mDrawerLayout.setDrawerListener(mDrawerToggle);

После этого использование поддержки действий Bar, как показано here in this documentation, а затем ваш индикатор ящика будет отображаться правильно и показывает стрелка Назад, когда вид поиска действий расширяется.

Не забывайте использовать com.android.support:appcompat-v7:21.0.+»(уровень Api 21) и android.support.v7.app.ActionBar

Вы можете настроить библиотеку поддержки с помощью этого guide.

И после того, что ваш индикатор ящика будет прекрасно выглядеть следующим образом .. !!!

AND then your drawer indicator will perfectly look like this.

+0

Пожалуйста, внимательно прочитайте мой вопрос. Во всяком случае, вопрос был решен. Спасибо за Ваш ответ. –

0

для меня ни один из решений, размещенных здесь в SO работал. у меня не было смотреть под го e hood библиотеки поддержки, чтобы узнать, почему и когда находится домашний набор значков, и я заметил несколько вещей.Главное наблюдение состоит в том, что икона находится в этой функции:

android.support.v7.widget.Toolbar#setNavigationIcon(android.graphics.drawable.Drawable) 

на линии

mNavButtonView.setImageDrawable(icon); 

Если вы столкнулись с той же проблемой, как и я, и ни один из предлагаемых решений работы (установка темы, пытаясь вызвать setNavigationIcon на панели инструментов, setHomeAsUpIndicator на панели действий или даже что-то еще), я предлагаю найти функцию, упомянутую выше, и поставить там точку останова. Затем вы можете увидеть, когда вызывается функция, и идентифицировать последний вызов функции (из окна Frame в студии android), который устанавливает значок. Для меня это была эта деятельность жизненного цикла метод синхронизации навигации ящик:

@Override 
protected void onPostCreate(Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 
    mDrawerToggle.syncState(); 
    mToolbar.setNavigationIcon(R.drawable.ic_hamburger); 
} 

Я просто добавил последнюю строку, и она работала.