Android CheckBox 修改选择框

效果图

是否被选中打印效果图图

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>

这样就实现了效果

demo 参考地址

发布了658 篇原创文章 · 获赞 250 · 访问量 63万+

猜你喜欢

转载自blog.csdn.net/qq_33210042/article/details/103507196