2015-01-17 5 views
12

С помощью панели инструментов AppCompat я хочу изменить цвет значка меню переполнения при изменении ActionMode.Панель инструментов AppCompat: изменение значка переполнения цвета в ActionMode

Например, значок переполнения будет белым в обычном режиме панели инструментов. И станет черным на ActionMode. До сих пор мне удалось изменить фон режима действия, а также текст заголовка. Но мне еще предстоит найти способ изменить цвет значка меню переполнения.

Я знаю, что есть ответ доступны: Change ActionMode Overflow icon

Я попробовал первое решение, и я не смог найти значок переполнения.

Второе решение, даже с задержкой 50L, приводит к тому, что значок меню переполнения начинает мигать цветом выделенного ActionMode для короткой секунды разделения, что очень раздражает.

ответ

40

Добавьте строку ниже в атрибуте тему:

<item name="android:textColorSecondary">@android:color/white</item> 
+0

Я не знаю, у меня есть второе решение, пожалуйста, проверьте эту ссылку http://stackoverflow.com/questions/26671677/android-appcompat-21-how-to-change-the-back-icon-and-the-overflow -icon-to-cu/33938229 # 33938229 – Piyush

+3

Остерегайтесь, это также изменит цвет текста в нижнем меню (который отображается нажатием специальной клавиши) на некоторых устройствах. Это может быть проблемой, если «textColorSecondary» и фон меню установлены на тот же (или похожий) цвет. – Storix

+2

Бетт подход был бы, создав отдельный стиль для него: '<имя стиля = "ToolbarTheme" родитель = "AppTheme.MyTheme"> <пункт Name = "андроида: textColorSecondary"> @ Android: цвет/белый ' – Ariq

4

Учитывая следующую панель инструментов:

<android.support.v7.widget.Toolbar 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/main_toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="?attr/actionBarSize" 
    theme="@style/MyToolbarStyle" /> 

Определить стиль, наследуя либо из ThemeOverlay.AppCompat.ActionBar или Dark варианта. Вы можете изменить цвет значка переполнения, установив атрибут textColorPrimary. Если вас интересует изменение цвета ActionBarDrawerToggle, вы также можете установить colorControlNormal.

<style name="MyToolbarStyle" parent="ThemeOverlay.AppCompat.ActionBar"> 
    <item name="colorControlNormal">#333333</item> 
    <item name="android:textColorPrimary">#333333</item> 
</style> 

Вы можете изменить стиль панели инструментов, используя тот же метод, связанный в вашем вопросе, то есть getSupportActionBar().getThemedContext().getTheme().applyStyle и т.д.

+1

Привет. спасибо за ответ ... Но проблема заключалась в том, что цвет меню значков переполнения разделяется значком переполнения ActionMode и значком переполнения панели инструментов. Цель состояла в том, чтобы иметь другой цвет для обоих. – Jun

3
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> 
    <item name="android:actionOverflowButtonStyle">@style/ActionButton.Overflow.Icon</item> 
</style> 

<style name="ActionButton.Overflow.Icon" parent="android:style/Widget.Holo.Light.ActionButton.Overflow"> 
    <item name="android:src">@mipmap/yourwanticon</item> 
</style> 
1

Чтобы правильно изменить цвет значка меню переполнения панели инструментов, установите тему своей панели инструментов на тему темного ActionBar приложения AppCompat. Например:

В вашем Рез/значений/файла style.xml создать тему, которая наследуется от AppCompat таким образом:

<style name="AppTheme.MyThemeName" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> 

Теперь установить тему вашей панели инструментов к этой теме:

<android.support.v7.widget.Toolbar 
    android:id="+id/my_toolbar_id 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/my_toolbar_height" 
    android:theme="@style/AppTheme.MyThemeName"> 

</android.support.v7.widget.Toolbar> 
1

Добавьте этот код на res-> styles.xml

<style name="ToolbarColored" parent="AppTheme"> 
<item name="android:textColorSecondary">YOUR_COLOR</item> 
</style> 

Тогда ваш стиль 'ToolbarColored' в г наш XCML файл как Белове

<android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     app:theme="@style/ToolbarColored" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:popupTheme="@style/AppTheme.PopupOverlay" /> 
0

Первая сделать свой пользовательский стиль

<style name="ToolbarColoredBackArrow" parent="AppTheme"> 
    <item name="android:textColorSecondary">@color/white</item> 
</style> 

Тогда просто добавить его в панель инструментов

 <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:titleTextColor="@color/white" 
      app:theme="@style/ToolbarColoredBackArrow" 
      android:layout_height="?attr/actionBarSize" 
      app:layout_scrollFlags="scroll|enterAlways" 
      android:background="?attr/colorPrimary" /> 
Смежные вопросы