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

Изменение цвета кнопки переполнения на ActionBar

Можно ли изменить цвет кнопки переполнения (3 вертикальных точки) на панели действий? Если да, то как мы это делаем? Я не нашел стиль для кнопки переполнения.

Спасибо

4b9b3361

Ответ 1

Вы можете изменить изображение, используемое для него, используя следующую декларацию стиля.

<style name="MyCustomTheme" parent="style/Theme.Holo">
    <item name="android:actionOverflowButtonStyle">@style/MyCustomTheme.OverFlow</item>
</style>

<style name="MyCustomTheme.OverFlow">
    <item name="android:src">@drawable/my_overflow_image</item>
</style>

И если вы используете ActionBarSherlock, вот как это сделать

<style name="MyCustomTheme" parent="style/Theme.Sherlock">
    <item name="android:actionOverflowButtonStyle">@style/MyCustomTheme.OverFlow</item>
    <item name="actionOverflowButtonStyle">@style/MyCustomTheme.OverFlow</item>
</style>

<style name="MyCustomTheme.OverFlow">
    <item name="android:src">@drawable/my_overflow_image</item>
</style>

Ответ 2

Ответ XGouchet отличный, но просто хотел добавить, что если вы наследуете существующий стиль, вы получите стандартное дополнение, выбранное состояние и т.д.

<style name="MyCustomTheme.OverFlow" parent="Widget.Sherlock.ActionButton.Overflow">
    <item name="android:src">@drawable/title_moreicon</item>
</style>

Ответ 3

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

toolbar.getOverflowIcon().setColorFilter(colorInt, PorterDuff.Mode.SRC_ATOP);

Ответ 4

Создайте этот метод:

public static void setOverflowButtonColor(final Activity activity, final int color) {
    final String overflowDescription = activity.getString(R.string.abc_action_menu_overflow_description);
    final ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView();
    final ViewTreeObserver viewTreeObserver = decorView.getViewTreeObserver();
    viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            final ArrayList<View> outViews = new ArrayList<View>();
            decorView.findViewsWithText(outViews, overflowDescription, View.FIND_VIEWS_WITH_CONTENT_DESCRIPTION);
            if (outViews.isEmpty()) {
                return;
            }
            AppCompatImageView overflow = (AppCompatImageView) outViews.get(0);
            overflow.setColorFilter(color);
            removeOnGlobalLayoutListener(decorView, this);
        }
    });
}

а затем вызовите его следующим образом:

setOverflowButtonColor(this, getResources().getColor(R.color.hot_pink));

Ответ 5

Если вы используете AppCompat, вы можете получить новый пользовательский стиль с атрибутом android:textColorSecondary, установленным на необходимый цвет, и использовать его в качестве темы для вашей панели инструментов. Android: изменение цвета текста и цвета переполнения панели инструментов

Ответ 6

Другой программный вариант:

        Drawable drawable = toolbar.getOverflowIcon();
        if(drawable != null) {
            drawable = DrawableCompat.wrap(drawable);
            DrawableCompat.setTint(drawable.mutate(), getResources().getColor(R.color.thecolor));
            toolbar.setOverflowIcon(drawable);
        }

Надеюсь, что это поможет!

Ответ 7

Помещение изображений - отличная идея, потому что, если вы можете изменить его, изменив цвета, тогда вам не нужно использовать дополнительное изображение. Точки меню выбирают цвет из textColorPrimary, поэтому вместо написания нескольких строк эта одна строка <item name="android:textColorPrimary">@android:color/white</item> исправит вашу проблему. Только небольшая проблема заключается в том, что этот цвет будет применяться и к цвету текста вашего меню переполнения, а также к множеству других мест:)

Ответ 8

<style name="MyCustomTheme" parent="@style/Theme.AppCompat.Light">
  <item name="actionOverflowButtonStyle">@style/OverflowMenuButtonStyle</item>
</style>
<style name="OverflowMenuButtonStyle" parent="Widget.AppCompat.ActionButton.Overflow">
  <item name="android:src">@drawable/quantum_ic_more_vert_white_24</item>
</style>

Обратите внимание, что это отличается от ответа XGouchet, удалив пространство имен android. Ответ XGouchet работает только для Lollipop и более высоких устройств, в то время как мои работы работают для всех устройств API 7+.

ref: Пользовательская тема AppCompat не меняет значок переполнения на старых устройствах

Ответ 9

Если вы используете последнюю панель инструментов, вам нужно поместить инструкцию в styles.xml, как показано в следующем коде:

<style name="AppToolbar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="android:textColorPrimary">@android:color/white</item>
    <item name="android:textColorSecondary">@android:color/black</item>
</style>

Ответ 10

просто добавьте эту строку в свой выбранный стиль в файле style.xma

<item name="colorControlNormal">@color/white</item>

его рабочий штраф. если вы используете

<item name="textColorSecondary">@color/white</item>

то ваши другие предметы, такие как цвет и радио-кнопки меню навигации курсора, будут затронуты

Ответ 11

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.dashboard, menu); // dashboard is xml file name
        Drawable drawable = menu.findItem(R.id.lan).getIcon();
        if (drawable != null) {
            drawable.mutate();
            drawable.setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP);
        }
        return true;
    }

Это работает для меня, и я нашел это отсюда

Ответ 12

Это правильный способ сделать это. Он изменит цвет всех значков управления панелью действий по умолчанию по вашему выбору, включая кнопку "Назад" и кнопку действия меню переполнения.

Ответ 13

Для изменения цвета значка переполнения, вы можете просто добавить

toolbar.setOverflowicon(getDrawable)