在菜单选项中设置自己的单选按钮颜色

4

我想将单选按钮的圆圈颜色(现在为粉色,如下图所示)更改为深蓝色,适用于菜单中的所有项目。

enter image description here

那是我的菜单:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.aoutir.mohamed.movies.MainFragment"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <!--<item-->
    <!--android:id="@+id/action_refresh"-->
    <!--android:title="@string/Refresh"-->
    <!--android:orderInCategory="200"/>-->
    <group android:checkableBehavior="single">
        <item
            android:id="@+id/action_popular"
            android:orderInCategory="100"
            android:title="@string/action_popular"
            app:showAsAction="never" />
        <item
            android:id="@+id/action_rated"
            android:orderInCategory="200"
            android:title="@string/action_rated"
            app:showAsAction="never" />
        <item
            android:id="@+id/action_favourites"
            android:orderInCategory="300"
            android:title="@string/action_favourites"
            app:showAsAction="never" />
    </group>

</menu>

style.xml(这是我整个应用程序的样式):

<resources xmlns:tools="http://schemas.android.com/tools">

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <!--<item name="android:popupMenuStyle">@style/PopupMenu</item>-->
    </style>

    <!--<style name="PopupMenu" parent="@android:style/Widget.PopupMenu">-->
        <!--<item name="android:popupBackground">@android:color/white</item>-->
        <!--<item name="colorAccent">@color/colorPrimary</item>-->
        <!--<item name="android:textColor">@android:color/black</item>-->
    <!--</style>-->

    <style name="AppTheme.NoActionBar" parent="Base.Theme.AppCompat.Light">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <style name="MovieTheme" parent="AppTheme">
        <item name="actionBarStyle">@style/ActionBar.Solid.Movies.NoTitle</item>
        <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
    </style>

    <style name="ActionBar.Solid.Movies.NoTitle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="displayOptions">useLogo|showHome</item>
        <item name="logo">@mipmap/pop_corn</item>
    </style>
    <style name="AppTheme.AppBarOverlay" parent="Base.ThemeOverlay.AppCompat.Dark.ActionBar" >
        <item name="overlapAnchor">false</item>
        <item name="android:overlapAnchor" tools:ignore="NewApi">false</item>
    </style>

    <style name="AppTheme.PopupOverlay" parent="Base.ThemeOverlay.AppCompat.Light">

    </style>

    <style name="CircularProgress" parent="Theme.AppCompat.Light">
        <item name="colorAccent">@color/sky_blue</item>
    </style>

    <style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.Light.ActionButton.Overflow">
        <item name="android:src">@mipmap/ic_sort</item>
        <item name="android:contentDescription">@string/action_sort</item>
    </style>

</resources>

还有与我的菜单相关的Java代码(检查是否选择了项目并执行某些操作):

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.main_fragment_menu,menu);
        super.onCreateOptionsMenu(menu,inflater);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.action_popular:
                if (item.isChecked()) item.setChecked(false);
                else item.setChecked(true);
                return true;
            case R.id.action_rated:
                if (item.isChecked()) item.setChecked(false);
                else item.setChecked(true);
                return true;
            case R.id.action_favourites:
                if (item.isChecked()) item.setChecked(false);
                else item.setChecked(true);
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

提前感谢任何帮助。


尝试这个 https://dev59.com/PWQn5IYBdhLWcg3wETvj#29551017 - Abhishek kumar
尝试使用 app:itemIconTint="@color/black" 来设置单选项的图标颜色。 - vishal-wadhwa
2个回答

1

使用此<android.support.v7.widget.AppCompatRadioButton来为您的单选按钮设置自定义颜色:

  <android.support.v7.widget.AppCompatRadioButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:buttonTint="@color/Color" />

或者,您可以使用样式来实现这个目的:

<style name="RadioButtonStyle" parent="AppTheme">
   <item name="colorControlNormal">@color/pink</item>
   <item name="colorAccent">@color/colorPrimary</item>
   <item name="android:textColorSecondary">@color/black</item>
</style>

1
要样式化溢出菜单弹出窗口中的单选按钮,您可以在工具栏的“popup theme”中设置colorAccent(用于选定的单选按钮)和colorControlNormal(用于其他按钮)。
首先,创建一个<style>作为主题使用:
<style name="MyPopupTheme">
    <item name="colorAccent">#00f</item>
    <item name="colorControlNormal">#00f</item>
</style>

然后,在您的布局中将此样式设置为 app:popupTheme ,在您用于活动操作栏的任何工具栏上:

<android.support.v7.widget.Toolbar
    app:popupTheme="@style/MyPopupTheme"
    .../>

当我使用PopupMenu(ContextThemeWrapper(ctx, R.style.CustomPopupStyle), view)创建菜单时,它对我不起作用。 - JPM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接