Development Tip

ActionBar의 오버플로 버튼 색상 변경

yourdevel 2021. 1. 10. 19:37
반응형

ActionBar의 오버플로 버튼 색상 변경


작업 표시 줄에서 오버플로 버튼 (세로 점 3 개)의 색상을 변경할 수 있습니까? 그렇다면 어떻게해야합니까? 오버플로 버튼 스타일을 찾지 못했습니다.

감사


다음 스타일 선언을 사용하여 사용되는 이미지를 변경할 수 있습니다.

<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>

XGouchet의 대답 은 훌륭하지만 기존 스타일에서 상속하면 표준 패딩, 선택한 상태 등을 얻을 수 있다는 것을 추가하고 싶었습니다.

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

이 답변 중 일부는 심각한 과잉이며 일부는 제한된 결과를 제공합니다. 대답은 훨씬 간단합니다. 언제든지 원하는 색상으로 설정할 수 있습니다. 여기:

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

AppCompat을 사용하는 경우 속성 android:textColorSecondary이 필요한 색상으로 설정된 새 사용자 정의 스타일을 파생 하여 도구 모음의 테마로 사용할 수 있습니다. Android : 툴바의 텍스트 색상 및 오버플로 아이콘 색상 변경


기타 프로그래밍 방식 옵션 :

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

도움이 되었기를 바랍니다.


이미지를 넣는 것은 좋은 생각이 아닙니다. 색상 만 변경하여 변경할 수 있다면 추가 이미지를 사용할 필요가 없기 때문입니다. 메뉴 점은 textColorPrimary에서 색상을 선택하므로 여러 줄을 작성하는 대신이 한 줄로 <item name="android:textColorPrimary">@android:color/white</item>문제를 해결할 수 있습니다. 작은 문제는이 색상이 오버플로 메뉴의 텍스트 색상과 다른 코스의 많은 장소에도 적용된다는 것입니다. :)


<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>

Note that this is different from XGouchet's answer by removing android namespace. XGouchet's answer only works for Lollipop and higher devices while mine works for all API 7+ devices.

ref: Custom AppCompat Theme not changing Overflow icon on older devices


If you are using the latest Toolbar, you have to put the statement in styles.xml, as shown in the code below:

<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>

just add this line in your choosen style in style.xma file

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

its working fine. if you use

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

then your other items like drawer navigation menu icons color and radio button will be affected


@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;
    }

It's working for me and I found it from here


For Overflow icon color change, you can just add

toolbar.setOverflowicon(getDrawable)

If you just want to get the 3 dots icon white instead of black you can simply change the theme of the toolbar to this:

 <android.support.v7.widget.Toolbar
     ...
     android:theme="@android:style/ThemeOverlay.Material.Dark.ActionBar"
 />

full reference here: medium.com/the-curious-case-of-the-overflow-icon-color

ReferenceURL : https://stackoverflow.com/questions/11425660/change-color-of-the-overflow-button-on-actionbar

반응형