如何在 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 里面包含 CheckBox 和 onClick 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
}
我想给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 里面包含 CheckBox 和 onClick 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
}