Подтвердить что ты не робот

Фоновый эффект пульсации на элементах панели инструментов 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

4b9b3361

Ответ 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" >