我正在使用appcompat_v7库。
在文档中说:
[...] AppCompat在早期版本的Android上为UI小部件的子集提供了类似的行为:
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
答案 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中的一个错误,一些小部件(例如Button
,Checkbox
和RadioButton
)没有使用Android 2.2 / 2.3中类似材料的背景。< / p>
已在AppCompat r22.1中修复。
简而言之,不再需要手动设置abc_btn_check_material
和类似资源作为这些小部件的背景绘制;图书馆自动完成。