【问题标题】:How to customize MaterialCheckBox in android?如何在android中自定义MaterialCheckBox?
【发布时间】:2022-01-23 11:45:14
【问题描述】:

我想制作一个圆形MaterialCheckBox,它可以完美地像圆形一样工作,但是圆形的颜色发生了变化,这不是我在ic_checkedic_unchecked 中设置的颜色。这是我的代码。为什么这不选择矢量颜色

XML 布局

 <com.google.android.material.checkbox.MaterialCheckBox
            android:id="@+id/selection_box"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            android:button="@drawable/custom_checkbox"
            />

drawable/custom_checkbox

<?xml version="1.0" encoding="utf-8"?>
<selector  xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_checked="true"
        android:drawable="@drawable/ic_checked"/>
    <item
        android:state_pressed="true"
        android:drawable="@drawable/ic_checked"/>
    <item
        android:state_pressed="false"
        android:drawable="@drawable/ic_unchecked"/>
</selector>

drawable/ic_checked

<vector android:height="20dp" android:tint="#F44336"
    android:viewportHeight="24.0" android:viewportWidth="24.0"
    android:width="20dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:fillColor="#ffffff" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM10,17l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z"/>
</vector>

drawable/ic_unchecked

<vector android:height="20dp" android:tint="#FFFFFF"
    android:viewportHeight="24.0" android:viewportWidth="24.0"
    android:width="20dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:fillColor="#FF000000" android:pathData="M12,2C6.47,2 2,6.47 2,12s4.47,10 10,10 10,-4.47 10,-10S17.53,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z"/>
</vector>

【问题讨论】:

    标签: android checkbox


    【解决方案1】:

    复选框的颜色默认为您的应用主题中定义的 ?attr/colorOnSurface(未选中)和 ?attr/colorSecondary(选中)。如果您想覆盖此行为,就像您可能使用不应着色的自定义可绘制对象一样,请将 app:useMaterialThemeColors 设置为 false

    尝试将此添加到您的复选框代码中:

    app:useMaterialThemeColors="false"
    

    如果这不起作用,请使用:

    您必须在复选框样式中设置按钮色调。 在color目录下新建一个资源文件,命名为button_tint。

    button_tint.xml:(设置您选择的颜色)

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="#F44336" android:state_checked="true"/>
    <item android:alpha="0.38" android:color="@color/white" android:state_enabled="false"/>
    <item android:color="@color/white"/>
    </selector>
    

    现在在 theme.xml 中添加:

    <style name="Widget.App.CheckBox" parent="Widget.MaterialComponents.CompoundButton.CheckBox">
        <item name="buttonTint">@color/button_tint</item>
    </style>
    

    最后将此样式添加到您的复选框:

    style="@style/Widget.App.CheckBox"
    

    这将在复选框上应用您的自定义颜色。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-17
      • 2016-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      • 2015-02-20
      相关资源
      最近更新 更多