样式不适用于自定义复选框和单选按钮

Nik*_*aya 6 android android-theme android-styles

我正在开发自定义复选框和单选按钮,但样式不适用于前棒棒糖设备(显示黑色代替).我这样编码:

XML:

<com.kaho.myapp.CustomCheckBox
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="CheckBoxText"
  android:textColor="@color/colorPrimary"
  android:theme="@style/SampleTheme"/>
Run Code Online (Sandbox Code Playgroud)

自定义复选框:

public class CustomCheckBox extends CheckBox {
    public CustomCheckBox(Context context) {
        super(context);
    }

    public CustomCheckBox(Context context, AttributeSet attrs) {
        super(context, attrs);
        setFont(context, attrs) ;
    }

    public CustomCheckBox(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        setFont(context,attrs) ;
    }

    public CustomCheckBox(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        setFont(context, attrs) ;
    }

    private void setFont(Context context, AttributeSet attrs) {
        if (attrs != null) {
            /* Set the font */
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

字体设置正确.风格:

<style name="SampleTheme" parent="Theme.AppCompat.Light">
    <item name="colorAccent">#08c283</item>
    <item name="android:textColorSecondary">#969696</item>
</style>
Run Code Online (Sandbox Code Playgroud)

Iul*_*scu 3

您遇到此问题是因为棒棒糖之前的设备无法设置colorAccent默认值。要获得这样的行为,请从相应的支持视图中扩展您的视图。会有这样的事情:

public class CustomCheckBox extends AppCompatCheckBox
public class CustomRadioButton extends AppCompatRadioButton
Run Code Online (Sandbox Code Playgroud)

这样,您的视图将具有棒棒糖之前的设备上的材料设计风格。