如何在 Android CheckBox 中添加可点击的填充?

How to add a clickable padding in Android CheckBox?

我想给Android添加paddings CheckBox,可以执行onClick 事件.

我试过这个:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:minHeight="80dp"
    android:gravity="center_vertical">

    <CheckBox
        android:id="@+id/checked"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="28dp"/>

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>

</LinearLayout>

还有这个:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:minHeight="80dp"
    android:gravity="center_vertical">

    <CheckBox
        android:id="@+id/checked"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:gravity="center"/>

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>

</LinearLayout>

但是两次都没有居中!右内边距加倍宽度,而左内边距没有宽度。

如果我这样使用边距:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:minHeight="80dp"
    android:gravity="center_vertical">

    <CheckBox
        android:id="@+id/checked"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="28dp"/>

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>

</LinearLayout>

margin部分无法执行onClick事件

你可以做的是使用一个 LinearLayout 里面包含 CheckBoxonClick LinearLayout 的方法使用与 Checkbox 相同的代码。按以下代码更新您的 XML

XML代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:minHeight="80dp"
    android:gravity="center_vertical">

    <LinearLayout
        android:id="@+id/layout_checked"
        android:layout_width="100dp"
        android:layout_height="100dp">
      <CheckBox
            android:id="@+id/checked"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:gravity="center"/>
    </LinearLayout>

<TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>

</LinearLayout>

Java代码:

    @Override
    protected void onCreate(Bundle savedInstanceState) {

    .
    .
    .
    LinearLayout layoutChecked = (LinearLayout)findViewById(R.id.layout_checked);
    CheckBox checkBox = (CheckBox)findViewById(R.id.checked);

    layoutChecked..setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    onClickedCheckBox();
                }
            });

    checkBox.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    onClickedCheckBox();
                }
            });
    }
     public void onClickedCheckBox(){
      //Do whatever you want to do here
    }