AppCompatCheckBox不适用于以下API 21

时间:2016-02-28 16:20:33

标签: android xml checkbox android-appwidget android-checkbox

我使用以下代码创建了一个动态复选框:

的xml:

<LinearLayout
    android:id="@+id/layout_checkbox"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">


</LinearLayout>

的java:

LinearLayout ll = (LinearLayout) findViewById(R.id.layout_checkbox);

ll.removeAllViews();

for (int i = 0; i < 10; i++) {

    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);

    AppCompatCheckBox myCheckBox = new AppCompatCheckBox(getApplicationContext());
    myCheckBox.setText(i);
    myCheckBox.setTextColor(Color.parseColor("#FFFFFF"));
    myCheckBox.setHintTextColor(Color.parseColor("#FFFFFF"));
    myCheckBox.setTextSize(12);

    myCheckBox.setId(i);

    ll.addView(myCheckBox, lp);
}

现在从上面代码LOLLIPOP版本显示带有文本的复选框。对于低于LOLLIPOP版本,它仅显示Text但不显示复选框。

如果我将以下代码放在xml文件中,同样适用于所有设备:

<android.support.v7.widget.AppCompatCheckBox
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Testing"
    android:buttonTint="@color/colorAccent"/>

但我无法在xml中定义复选框,因为我必须动态创建它。

即使setButtonTintList不适用于LOLLIPOP

以下

如何在LOLLIPOP以下版本的AppCompatCheckBox下显示复选框?

2 个答案:

答案 0 :(得分:8)

不要使用getApplicationContext(),对于传递到Context的{​​{1}},您需要使用对您的活动(扩展new AppCompatCheckBox())上下文的引用才能正确使用为AppCompatActivity注入样式。如果您在活动中创建此内容,则为AppCompatCheckBox;如果您在片段中创建此内容,则为new AppCompatCheckBox(this)

以下代码适用于所有版本:

new AppCompatCheckBox(getActivity())

答案 1 :(得分:2)

这肯定有效

 <android.support.v7.widget.AppCompatCheckBox
                xmlns:app="http://schemas.android.com/apk/res-auto"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Testing"
                app:buttonTint="@color/colorAccent"/>