我需要将检查放在我的imageview的右上角。但是当我这样做时,我发现我的复选框周围有一个默认的边距。有没有办法删除这个??
<?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>
答案 0 :(得分:17)
您可以使用负边距。
android:layout_marginTop = "-5dp"
android:layout_marginRight = "-5dp"
答案 1 :(得分:3)
现在有一种更好的方法:
android:minWidth="0dp"
android:minHeight="0dp"
答案 2 :(得分:3)
这适用于约束布局。我希望它可以用于其他布局。
<androidx.appcompat.widget.AppCompatCheckBox
...
android:translationX="-5dp"
/>
答案 3 :(得分:1)
如果您查看由 onDraw() 方法中的 source code 类扩展的 CompoundButton 类的 Checkbox,填充取决于重力 >
@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;
}
...
}
那么你可以做的是将属性gravity的xml值设置为
android:gravity="top|start"
但是只有当您不想在复选框中使用文本时才可以使用此方法,因为重力用于使文本居中。
答案 4 :(得分:0)
感谢@VladislavShcherbakov评论,它是:
android:paddingLeft="-5dp"
android:layout_marginStart="-5dp"
android:layout_marginLeft="-5dp"
// android:translationX="-5dp"
答案 5 :(得分:0)
要在Android中删除单选按钮的默认边距或填充
如果您使用xml
android:minWidth="0dp"
android:minHeight="0dp"
如果以编程方式使用
radiobtn.setMinimumHeight(0);
radiobtn.setMinimumWidth(0);
答案 6 :(得分:-1)
为什么要使用负填充和所有内容复杂化。使用简单直接的方法,为FrameLayout提供填充,而不是最顶层的相对布局。因为在第二个布局中只有CheckBox,所以不需要为它提供填充。
如果您遇到任何问题或有任何疑问,请告诉我