Фоновый эффект пульсации на элементах панели инструментов StandAlone отсутствует
Использование панели инструментов "Автономная" имеет проблему с возможностью выбора фона элементов, после этой статьи также не работает:
http://blog.mohitkanwal.com/blog/2015/03/07/styling-material-toolbar-in-android/
Проверьте обычную панель инструментов в приведенном ниже снимке экрана, селектор эффекта пульсации исчезнет при использовании отдельной панели инструментов.
вот мой стиль:
<style name="ToolbarTheme" parent="Widget.AppCompat.Toolbar">
<item name="actionMenuTextColor">@color/green</item>
<item name="drawerArrowStyle">@style/DrawerArrowToggle</item>
<item name="colorControlNormal">@color/white</item>
<item name="colorControlActivated">@color/white</item>
<item name="android:textColorPrimary">@color/white</item>
<item name="titleTextAppearance">@style/ActionBar.TitleText</item>
<item name="android:actionOverflowButtonStyle">@style/MoreActionButton</item>
<item name="actionButtonStyle">@style/Widget.AppCompat.ActionButton</item>
<item name="selectableItemBackground">?android:selectableItemBackground</item>
<item name="selectableItemBackgroundBorderless">?android:selectableItemBackground</item>
<item name="colorControlHighlight">@color/accentColor</item>
</style>
EDIT:
После выделения проблемы из моего кода я смог воспроизвести проблему, и, похоже, она связана с новой библиотекой дизайна поддержки. И вот тестовый код, который имеет проблему:
TestToolbar.zip
![enter image description here]()
Ответы
Ответ 1
Это было сделано с использованием эмулятора genymotion android 5.1
Я не понял вашу проблему, но я просто попытался создать панель инструментов так же, как ваша, но с удалением некоторого стиля, который у меня нет
вот мой стиль
<style name="ToolbarTheme"
parent="Widget.AppCompat.Toolbar">
<item name="actionMenuTextColor">#1bff3a</item>
<item name="colorControlNormal">#FFF</item>
<item name="colorControlActivated">#FFF</item>
<item name="android:textColorPrimary">#FFF</item>
<item name="actionButtonStyle">@style/Widget.AppCompat.ActionButton</item>
<item name="selectableItemBackground">?android:selectableItemBackground</item>
<item name="selectableItemBackgroundBorderless">?android:selectableItemBackground</item>
<item name="colorControlHighlight">@color/accentColor</item>
</style>
Моя панель инструментов
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?colorPrimary"
app:theme="@style/ToolbarTheme"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
/>
Мое меню
<item
android:id="@+id/action_settings"
android:title="@string/action_settings"
android:icon="@drawable/abc_ic_clear_mtrl_alpha"
app:showAsAction="always"
/>
Код активности
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.inflateMenu(R.menu.menu_home);
Снимок экрана результата
![Screenshot of working toolbar]()
Edit
после загрузки образца, который вы предоставили в вопросе, проблема не имеет ничего общего с автономной панелью инструментов или панелью действий (обе имеют ту же проблему) при использовании AppBarLayout
, проблема кажется, что эффект Ripple
будет нарисован на AppBarLayout
вместо представления выбранного пункта меню, я запишу видео, объясняющее его.
видео:
AppBarLayout с видео на панели инструментов
Я попытаюсь найти решение для этого.
Ответ 2
Похоже, эффект пульсации все еще существует, но цвет пульсации изменился. Я не уверен в вашей проблеме, но это то, что я вижу.
Я предлагаю вам удалить
<item name="colorControlHighlight">@color/accentColor</item>
из вашего кода и запустите его снова. Если рябь не отображается (они должны), измените цвет акцента.
Ответ 3
Обходной путь в отношении selectableItemBackground
тоже не помог мне. Лучшая стратегия, к которой я подошла до сих пор, - установить прозрачность фона панели инструментов:
<android.support.v7.widget.Toolbar
...
android:background="@android:color/transparent"/>
Это позволяет эффект пульсации (обрезанный на вершину Actionbar) в расширенном/сложенном/промежуточном состоянии.
Ответ 4
Ответ Криса Бэна по оригинальной проблеме:
https://code.google.com/p/android/issues/detail?id=176431
Это потому, что по умолчанию? attr/actionBarItemBackground - это неограниченный RippleDrawable, что означает, что он проектирует/рисует следующего родителя. В этом случае это CollapsingToolbarLayout, который вы на самом деле не видите.
Здесь мало что можно сделать с точки зрения библиотеки. "Обходной путь" - это установить actionBarItemBackground, чтобы он не был безграничным:
<style name="Theme.Toolbar.Collapsing" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="actionBarItemBackground">?attr/selectableItemBackground</item>
</style>
<Toolbar
...
android:theme="Theme.Toolbar.Collapsing" />
Ответ 5
Это сработало для меня:
Определите пользовательскую тему в styles.xml
<style name="MyAppbarTheme" parent="@style/ThemeOverlay.AppCompat.Light">
<item name="colorControlHighlight">@color/colorAccent</item>
</style>
Затем примените эту тему в AppBarLayout или панели инструментов
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/MyAppbarTheme" >