动态创建单选按钮或CheckBox不使用颜色重音

Neo*_*eoh 5 android themes android-appcompat android-5.0-lollipop

使用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>
Run Code Online (Sandbox Code Playgroud)

但是我有一堆动态创建的复选框和单选按钮,它们不会从xml中膨胀.这些动态创建的对象不会继承我指定的颜色重音.如何正确设置这些颜色重音?

Rol*_*f ツ 11

除了创建一个只有一个CheckBox的布局文件而不是给它充气之外,你无法做任何事情.

正如开发人员网站所述:材料主题设计只能在使用布局inflater加载视图时应用.

这是因为新的材料设计backport与布局膨胀过程挂钩.

资料来源:http://android-developers.blogspot.nl/2014/10/appcompat-v21-material-design-for-pre.html

编辑:
在较新的版本中,可以动态创建22.1+的AppCompat v7小部件,如CheckBox和RadioButton(不再隐藏/内部API).

目前支持这些小部件:

  • AppCompatAutoCompleteTextView
  • AppCompatButton
  • AppCompatCheckBox
  • AppCompatCheckedTextView
  • AppCompatEditText
  • AppCompatMultiAutoCompleteTextView
  • AppCompatRadioButton
  • AppCompatRatingBar
  • AppCompatSpinner
  • AppCompatTextView
  • AppCompatSeekBar(自23.1开始)
  • AppCompatImageButton(自23.1开始)
  • AppCompatImageView(自23.1开始)


Sim*_*mon 6

我遇到了同样的问题,现在每个动态创建的视图都有一个material_factory_*xml文件.它有点烦人,但它的工作原理:

// checkbox = new CeckBox(context);
checkbox = (CheckBox) View.inflate(context, R.layout.material_factory_checkbox, null);
Run Code Online (Sandbox Code Playgroud)

和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" />
Run Code Online (Sandbox Code Playgroud)