Android AppCompatCheckBox不适用于API 21以下的版本

Android AppCompatCheckBox不适用于API 21以下的版本,android,xml,checkbox,android-appwidget,android-checkbox,Android,Xml,Checkbox,Android Appwidget,Android Checkbox,我使用以下代码创建了一个动态复选框: xml: 但是我不能用xml定义复选框,因为我必须动态创建它 即使是setButtonTintList也不适用于以下LOLLIPOP 如何使用AppCompatCheckBox显示以下LOLLIPOP版本的复选框?不要使用getApplicationContext(),因为传递到new AppCompatCheckBox()的上下文需要使用对活动的引用(扩展AppCompatActivity)上下文,以正确插入AppCompatCheckBox的样式。如果在

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

xml:

但是我不能用xml定义复选框,因为我必须动态创建它

即使是
setButtonTintList
也不适用于以下
LOLLIPOP


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

不要使用
getApplicationContext()
,因为传递到
new AppCompatCheckBox()
上下文
需要使用对活动的引用(扩展
AppCompatActivity
)上下文,以正确插入
AppCompatCheckBox
的样式。如果在活动中创建此项,则为
new-AppCompatCheckBox(This)
;如果在片段中创建此项,则为
new-AppCompatCheckBox(getActivity())

下面这样的代码适用于所有版本:

public class MainActivity extends AppCompatActivity {

  @Override protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    LinearLayout layout = (LinearLayout) findViewById(R.id.layout);
    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(this);
      myCheckBox.setText("text");
      myCheckBox.setTextSize(12);

      myCheckBox.setId(i);

      layout.addView(myCheckBox, lp);
    }
  }

}
public类MainActivity扩展了AppCompatActivity{
@在创建时覆盖受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout布局=(LinearLayout)findViewById(R.id.layout);
对于(int i=0;i<10;i++){
LinearLayout.LayoutParams lp=
新建LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_内容,LinearLayout.LayoutParams.WRAP_内容);
AppCompatCheckBox myCheckBox=新建AppCompatCheckBox(此);
myCheckBox.setText(“文本”);
myCheckBox.setTextSize(12);
myCheckBox.setId(i);
layout.addView(myCheckBox,lp);
}
}
}

这肯定会奏效

 <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"/>

<android.support.v7.widget.AppCompatCheckBox
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Testing"
    android:buttonTint="@color/colorAccent"/>
public class MainActivity extends AppCompatActivity {

  @Override protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    LinearLayout layout = (LinearLayout) findViewById(R.id.layout);
    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(this);
      myCheckBox.setText("text");
      myCheckBox.setTextSize(12);

      myCheckBox.setId(i);

      layout.addView(myCheckBox, lp);
    }
  }

}
 <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"/>