使用v21 AppCompat,我们可以设置自定义颜色主题,如下所示:
<style name="Theme.MyTheme" parent="Theme.AppCompat">
<!-- customize the color palette -->
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/accent</item>
</style>
但我有一堆动态创建的复选框和单选按钮,它们不会从xml 中膨胀。这些动态创建的对象不会继承我指定的颜色重音。如何正确设置这些颜色重音?
答案 0 :(得分:11)
除了创建一个只有一个CheckBox的布局文件而不是给它充气之外,你无法做任何事情。
正如开发人员网站所述:只有在使用布局过热器加载视图时才能应用材质主题设计。
这是因为新的材料设计backport与布局膨胀过程挂钩。
来源:http://android-developers.blogspot.nl/2014/10/appcompat-v21-material-design-for-pre.html
修改强>
在较新版本的22.1+ AppCompat v7中,可以动态创建CheckBox和RadioButton等小部件(不再隐藏/内部API)。
目前支持这些小部件:
答案 1 :(得分:5)
我遇到了同样的问题,现在每个动态创建的视图都有一个material_factory_ * xml文件。它有点烦人,但它有效:
// checkbox = new CeckBox(context);
checkbox = (CheckBox) View.inflate(context, R.layout.material_factory_checkbox, null);
和material_factory_checkbox.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" />
答案 2 :(得分:1)
您可以实际执行某些操作,在充气视图上应用样式,例如:
<CheckBox
android:id="@+id/check_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/save_password_label"
android:theme="@style/CheckBoxStyle"
/>
风格:
<style name="CheckBoxStyle" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorAccent">@color/colorPrimary</item>
</style>
答案 3 :(得分:0)
遇到了同样的问题。您需要设置单选按钮主题,而不是样式。
android:theme="@style/RadioButtonStyle"
实施例
<RadioButton
android:theme="@style/RadioButtonStyle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp" />
P.s这是在动态创建的单选按钮
答案 4 :(得分:-1)
尝试使用支持库中的AppCompatCheckBox:
import android.support.v7.widget.AppCompatCheckBox;
AppCompatCheckBox cb = new AppCompatCheckBox(context);