2014-11-03 113 views
5

使用V21程序兼容性,我们可以设置自定义颜色主题像以下:动态创建单选按钮或复选框不使用色彩强调

<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

梁定邦你最终解决问题了吗? – 2015-10-17 19:45:59

+0

不,我必须使用xml来扩充他们的视图,即使他们是动态创建的,就像他们所建议的那样。 – Neoh 2015-10-22 03:23:54

+0

即使使用新的AppCompat小部件?看到我的答案。 – 2015-10-23 12:27:11

回答

11

除了只用一个CheckBox创建一个布局文件而不是对其进行膨胀之外,您无法做任何事情。

正如开发人员网站所述:材质主题设计只能在使用版面加压器加载视图时应用。

这是因为新的材料设计backport钩入布局膨胀过程。

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

编辑:
在较新版本的应用程序兼容性V7窗口小部件等CheckBox和单选按钮可以动态创建的22.1+(不再隐藏/内部API)。

目前这些小部件的支持:

  • AppCompatAutoCompleteTextView
  • AppCompatButton
  • AppCompatCheckBox
  • AppCompatCheckedTextView
  • AppCompatEditText
  • AppCompatMultiAutoCompleteTextView
  • AppCom patRadioButton
  • AppCompatRatingBar
  • AppCompatSpinner
  • AppCompatTextView
  • AppCompatSeekBar(自23.1)
  • AppCompatImageButton(自23.1)
  • AppCompatImageView(自23.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" /> 
0

也有同样的问题。您需要设置单选按钮主题,而不是样式。

android:theme="@style/RadioButtonStyle" 

<RadioButton 
android:theme="@style/RadioButtonStyle" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_marginBottom="10dp" /> 

诗这是工作在动态创建的单选按钮

-1

尝试使用AppCompatCheckBox从支持库:

import android.support.v7.widget.AppCompatCheckBox; 

AppCompatCheckBox cb = new AppCompatCheckBox(context); 
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>