效果图
是否被选中打印效果图图
CheckBox 是多选框 ,选中之后可以再次点击取消操作.
在使用的时候注意padding 是相对于字体来的不是相对选择框
下面第一个位置调整了 使用了paddingleft
在androidx以前布局
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="同意本协议" />
在androidx 中布局使用 使用(不过使用CheckBox还是可以的)
<androidx.appcompat.widget.AppCompatCheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:text="同意本协议" />
下面说想修改前面的图片
CheckBox 修改选择框的图片 可以通过使用style 或者直接是不button 来修改
1 通过 style
xml 代码如下
<CheckBox
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="同意本协议"
style="@style/checkbox"
/>
values 里面 styles 代码如下
<style name="checkbox">
<item name="android:button">@drawable/checkbox</item>
</style>
checkbox 使用selector如下
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/check_unselect" android:state_checked="false" />
<item android:drawable="@drawable/checkselect" android:state_checked="true" />
</selector>
这样修改好了,
2 直接使用button
<CheckBox
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="同意本协议"
android:button="@drawable/checkbox"
/>
checkbox 的代码
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/check_unselect" android:state_checked="false" />
<item android:drawable="@drawable/checkselect" android:state_checked="true" />
</selector>
关于CheckBox 是否被选中的监听 使用setOnCheckedChangeListener 如下
public class MainActivity extends AppCompatActivity {
private CheckBox checkBox;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
checkBox = findViewById(R.id.checkbox);
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Log.e("--------是否被选中", String.valueOf(isChecked));
}
});
}
}
做多选筛选的时候使用也是比较方便的
下面多一个多选题效果图如下
代码
<CheckBox
android:id="@+id/checkbox11"
android:layout_marginLeft="17dp"
android:layout_marginRight="17dp"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginTop="10dp"
android:gravity="center"
android:button="@null"
android:background="@drawable/drawable_radio_bg"
android:text="选举权和被选举权" />
<CheckBox
android:id="@+id/checkbox22"
android:layout_marginLeft="17dp"
android:layout_marginRight="17dp"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginTop="10dp"
android:gravity="center"
android:button="@null"
android:background="@drawable/drawable_radio_bg"
android:text="劳动权" />
<CheckBox
android:id="@+id/checkbox33"
android:layout_marginTop="10dp"
android:layout_marginLeft="17dp"
android:layout_marginRight="17dp"
android:layout_width="match_parent"
android:layout_height="40dp"
android:gravity="center"
android:button="@null"
android:background="@drawable/drawable_radio_bg"
android:text="受教育权" />
<CheckBox
android:id="@+id/checkbox44"
android:layout_marginLeft="17dp"
android:layout_marginRight="17dp"
android:layout_width="match_parent"
android:layout_marginTop="10dp"
android:layout_height="40dp"
android:gravity="center"
android:button="@null"
android:background="@drawable/drawable_radio_bg"
android:text="监督权" />
drawable 里面的drawable_radio_bg
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/radio_bg" android:state_checked="false" />
<item android:drawable="@drawable/radio_select_bg" android:state_checked="true" />
</selector>
然后就是radio_bg
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="10dp"/>
<stroke android:color="#1296db" android:width="1dp"/>
</shape>
radio_select_bg
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="10dp"/>
<solid android:color="#1296db"/>
</shape>
这样就实现了效果