如何删除 Android 复选框周围的填充

我需要把我的图像视图右上角的检查。但是当我这样做的时候,我注意到在我的复选框周围有一个默认的边距。有办法移除这个吗?

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >


<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" >


<ImageView
android:id="@+id/thumbImage"
android:layout_width="100dp"
android:layout_height="132dp"
android:layout_gravity="center" />
</FrameLayout>


<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="#ff0000"
android:gravity="center" >


<CheckBox
android:id="@+id/itemCheckBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_gravity="center"
android:button="@drawable/checkbox_background"
android:paddingLeft="0dp"
android:paddingTop="0dp" />


</LinearLayout>


</RelativeLayout>
34616 次浏览

You could use a negative margin.

android:layout_marginTop = "-5dp"
android:layout_marginRight = "-5dp"

Why to complicate with a negative padding and all. Use the simple and straight way, give padding to the FrameLayout instead tof the top most Relative layout that would do the trick. As you have only the CheckBox in the second layout there is no need to give padding for it.

Please do let me know if you face any problems or have any further doubts

There's now a better way of doing this:

android:minWidth="0dp"
android:minHeight="0dp"

Thanks to @VladislavShcherbakov comment, it is:

android:paddingLeft="-5dp"
android:layout_marginStart="-5dp"
android:layout_marginLeft="-5dp"
// android:translationX="-5dp"

这在Constraint Layout中对我有用。我希望它能适用于另一种布局。

<androidx.appcompat.widget.AppCompatCheckBox
...
android:translationX="-5dp"
/>

To remove radio button default margins or padding in android

if you using xml

android:minWidth="0dp"
android:minHeight="0dp"

if using programmatically

 radiobtn.setMinimumHeight(0);
radiobtn.setMinimumWidth(0);

If you look at the source code for the CompoundButton class that is extended by the Checkbox class at the onDraw() method, the padding depends from the gravity

  @Override
protected void onDraw(Canvas canvas) {
...


final int top;
switch (verticalGravity) {
case Gravity.BOTTOM:
top = getHeight() - drawableHeight;
break;
case Gravity.CENTER_VERTICAL:
top = (getHeight() - drawableHeight) / 2;
break;
default:
top = 0;
}
...
}

So what you can do is set the xml value for the attribute gravity to
android:gravity="top|start"

But this can be used only if you don't want to use text with your checkbox, since the gravity is used to center the text.