86

I need to put check to the right hand top corner of my imageview. But when I do this I noticed a default margin around my checkbox. Is there a way to remove this??

<?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>
Lincy
  • 1,033
  • 1
  • 8
  • 14

7 Answers7

173

There's now a better way of doing this:

android:minWidth="0dp"
android:minHeight="0dp"
Zoe
  • 27,060
  • 21
  • 118
  • 148
Rishabh876
  • 3,010
  • 2
  • 20
  • 37
38

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);
Abhishek Garg
  • 3,092
  • 26
  • 30
32

You could use a negative margin.

android:layout_marginTop = "-5dp"
android:layout_marginRight = "-5dp"
Benito Bertoli
  • 25,285
  • 12
  • 54
  • 61
5

This works for me in Constraint Layout. I hope it will work for another layout.

<androidx.appcompat.widget.AppCompatCheckBox
                ...
                android:translationX="-5dp"
                 />
Shihab Uddin
  • 6,699
  • 2
  • 59
  • 74
  • 1
    Please don't post answers when it only "works" and you don't know the real consequences. This will have like thousands of complications in the long run – Farid Mar 18 '22 at 05:44
2

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.

slaviboy
  • 1,407
  • 17
  • 27
0

Thanks to @VladislavShcherbakov comment, it is:

android:paddingLeft="-5dp"
android:layout_marginStart="-5dp"
android:layout_marginLeft="-5dp"
// android:translationX="-5dp"
CoolMind
  • 26,736
  • 15
  • 188
  • 224
-4

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

pvn
  • 2,016
  • 19
  • 33
  • Just saying because in the issue what you need is not a padding but that there is some padding already that needs to be removed. This happens only in the older android version where the tick's tail goes beyond the checkbox – Lincy Feb 07 '14 at 05:23