AppCompat材质样式窗口小部件色调错误

时间:2014-10-27 19:48:41

标签: android android-appcompat material

我正在使用appcompat_v7库。

在文档中说:

[...] AppCompat在早期版本的Android上为UI小部件的子集提供了类似的行为:

AppCompat工具栏(动作模式等)提供的所有内容

  • 的EditText
  • 微调
  • 复选框
  • 单选按钮
  • 切换(使用新的android.support.v7.widget.SwitchCompat)
  • CheckedTextView 你不需要做任何特殊的事情来使这些工作,只需像往常一样在你的布局中使用这些控件,AppCompat将完成其余的工作(有一些警告;请参阅下面的常见问题解答)。

这是我的代码:

值/ styles.xml

<style name="AppBaseTheme" parent="Theme.AppCompat">
    <item name="colorPrimary">@color/material_blue_grey_800</item>
    <item name="colorPrimaryDark">@color/material_blue_grey_950</item>
    <item name="colorAccent">@color/material_deep_teal_200</item>
</style>

布局/ activity_main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.lollipoptest.MainActivity" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world" />

<CheckBox
    android:id="@+id/checkBox1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textView1"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="28dp"
    android:text="CheckBox" />

<RadioButton
    android:id="@+id/radioButton1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/checkBox1"
    android:layout_centerHorizontal="true"
    android:text="RadioButton" />

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/radioButton1"
    android:layout_centerHorizontal="true"
    android:ems="10" >

    <requestFocus />
</EditText>

默认的MainActivity.java没有变化

操作栏显示新的材质样式。编辑文本也是。 但复选框和radiobutton没有。 我做错了什么?

照片: https://drive.google.com/file/d/0B1jx6rK5CDqTRnhYVDU3V21JRlk/view?usp=sharing

3 个答案:

答案 0 :(得分:11)

我找到了解决方案:

 <CheckBox
        android:id="@+id/chbDevuelto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="16dp"
        android:button="@drawable/abc_btn_check_material"
        android:buttonTint="@color/colorAccent"
        android:layout_marginStart="16dp"
        android:focusable="false" />

这一行可以解决问题:

android:button="@drawable/abc_btn_check_material" android:buttonTint="@color/colorAccent"

适用于所有版本:3

答案 1 :(得分:2)

我认为它不适用于这些版本。它模拟棒棒糖中使用的色调。在低于4.0的版本中,单选按钮和复选框只是图像。这很难染色。 Appcompat着色它可以着色的东西。尝试4.0版(冰淇淋三明治),从那个版本开始它可能会起作用。

看看这个,这是一篇由Chris Banes撰写的关于Appcompat v21的文章。 https://chris.banes.me/2014/10/17/appcompat-v21/

您可以使用4.0作为最低SDK版本。您有大约85%的设备支持4.0。它还为您省去了很多麻烦。以下是更多信息的链接:https://developer.android.com/about/dashboards/index.html

答案 2 :(得分:1)

这是AppCompat r22中的一个错误,一些小部件(例如ButtonCheckboxRadioButton)没有使用Android 2.2 / 2.3中类似材料的背景。< / p>

已在AppCompat r22.1中修复。

简而言之,不再需要手动设置abc_btn_check_material和类似资源作为这些小部件的背景绘制;图书馆自动完成。