Android 无法获取材质设计复选框以使用样式

Android 无法获取材质设计复选框以使用样式,android,checkbox,material-design,android-theme,Android,Checkbox,Material Design,Android Theme,我正在尝试将两个复选框视图添加到我当前应用程序的反馈片段中,该应用程序正在使用AppCompat库(v7:22.2.1)。此应用程序的API范围为当前16(22)。我的清单是使用以下主题定义设置的: android:theme=“@style/AppTheme” 在我的styles.xml文件中定义如下: <resources> <!-- Base application theme. --> <style name="AppTheme" pare

我正在尝试将两个复选框视图添加到我当前应用程序的反馈片段中,该应用程序正在使用AppCompat库(v7:22.2.1)。此应用程序的API范围为当前16(22)。我的清单是使用以下主题定义设置的:

android:theme=“@style/AppTheme”

在我的
styles.xml
文件中定义如下:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
    </style>

    <style name="AppTheme.FacebookFlatButton">
        <item name="android:background">@drawable/facebook_flat_button</item>
        <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
        <item name="android:textColor">@android:color/white</item>
    </style>

    <style name="AppTheme.TwitterFlatButton">
        <item name="android:background">@drawable/twitter_flat_button</item>
        <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
        <item name="android:textColor">@android:color/white</item>
    </style>

</resources>

@可拖动/平面按钮
?android:attr/textAppearanceMedium
@android:彩色/白色
@可拖动/推特按钮
?android:attr/textAppearanceMedium
@android:彩色/白色
问题是我的复选框(我也注意到我的EditText)视图没有默认为正确的颜色,因此在选中时它们是可查看的。以下是Android Studio和我的模拟器中的预览屏幕截图:

无论我将其他SO文章中的样式项组合成什么样式,例如,颜色在模拟器或设备上都不会改变,但在预览中会更新。我也尝试过对我的自定义主题的父主题进行各种调整,但似乎没什么关系

我已经在Nexus5(API 19)和Nexus6(API 22)仿真器中试过了,它在我的Nexus6设备上也做过同样的事情


我在这里并没有定义太多的自定义,但我仍然觉得我在这里遗漏了一些重要的小信息。我遗漏了什么?

您需要为其指定颜色,将其放在主样式“AppTheme”的行下方

  <item name="colorAccent">@color/color_primary</item>
@color/color\u primary

这将更改您的复选框和edittext颜色。好的,经过大量的研究和测试,我有了一个解决方案,可以同时适用于我的复选框和edittext控件

就我而言,(糟糕的)假设是一个主题可以处理AppCompat和材料设计,这是不正确的。基本上,对于AppCompat(定义样式,而不使用
android:
前缀,例如复选框和编辑文本:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <!-- Base application theme -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <!-- Customize your theme here. -->
    </style> 

    <style name="AppTheme.EditText" parent="Widget.AppCompat.EditText">
        <item name="colorControlNormal">@color/almanac_red_dark</item>
        <item name="colorControlActivated">@color/almanac_red_light</item>
        <item name="colorControlHighlight">@color/almanac_red_light</item>
    </style>

    <style name="AppTheme.CheckBox">
        <item name="colorAccent">@color/almanac_red_dark</item>
    </style>

    <style name="AppTheme.FlatButton">
        <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
        <item name="android:textColor">@android:color/white</item>
    </style>

    <style name="AppTheme.FacebookFlatButton" parent="AppTheme.FlatButton">
        <item name="android:background">@drawable/facebook_flat_button</item>
    </style>

    <style name="AppTheme.TwitterFlatButton" parent="AppTheme.FlatButton">
        <item name="android:background">@drawable/twitter_flat_button</item>
    </style>

</resources>

我已经在Nexus 4(API 16)、Nexus 5(API 19)和Nexus 6(API 22)模拟器以及我的物理Nexus 6设备上进行了尝试,一切都如我所料。

我在原始帖子中链接的SO文章中提到了这一点。它不起作用。
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="@android:style/Theme.Material.Light">
        <!-- Customize your theme here. -->
    </style>

    <style name="AppTheme.EditText">
        <item name="android:colorControlNormal">@color/almanac_red_dark</item>
        <item name="android:colorControlActivated">@color/almanac_red_light</item>
        <item name="android:colorControlHighlight">@color/almanac_red_light</item>
    </style>

    <style name="AppTheme.CheckBox">
        <item name="android:colorAccent">@color/almanac_red_dark</item>
    </style>

</resources>