Search code examples
androidandroid-layoutandroid-drawableandroid-buttonandroid-image

Changing the drawable size inside a button


I want to create a Button like this:

Button Example

Here is my code:

<Button
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center"
android:drawablePadding="10dp"
android:id="@+id/button"
android:text="Play Game"
android:background="@drawable/ronaldo"
android:drawableRight="@drawable/messi" />

But the messi.jpeg is too large, and it doesn't show the text in this situation. How to decrease the image size to fit the button?

May anyone help me to solve this problem?


Solution

  • Solution 1:

    Adding a drawable to a button has very limited functions. You can't change the drawable size, so the best way to fix it is to add a button with an image view beside it in a linear layout like this:

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="@drawable/ronaldo"
        android:orientation="horizontal">
    
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="80dp"
            android:layout_marginEnd="10dp"
            android:layout_marginRight="10dp"
            android:background="@null"
            android:text="Play Game"
            android:textColor="#ff0000"
            android:textStyle="italic" />
    
        <ImageView
            android:id="@+id/imageView"
            android:layout_width="wrap_content"
            android:layout_height="80dp"
            android:src="@drawable/messi" />
    
    </LinearLayout>
    

    Solution 2:

    You can also do the following if you prefer this one, but you will have to add onClickListener() for each one of them:

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="@drawable/ronaldo"
        android:orientation="horizontal">
    
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="80dp"
            android:background="@null"
            android:text="Play Game"
            android:textColor="#ff0000"
            android:textStyle="italic" />
    
        <ImageButton
            android:id="@+id/imageButton"
            android:layout_width="wrap_content"
            android:layout_height="80dp"
            android:src="@drawable/messi" />
    
    </LinearLayout>
    

    Solution 3:

    As you have suggested in the comments, you would do something like this:

    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="80dp"
        android:layout_gravity="center"
        android:background="@drawable/ronaldo">
    
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="80dp"
            android:layout_alignLeft="@+id/buttonLayout"
            android:layout_alignRight="@+id/buttonLayout"
            android:background="@null" />
    
        <LinearLayout
            android:id="@+id/buttonLayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
    
            <TextView
                android:id="@+id/textView"
                android:layout_width="wrap_content"
                android:layout_height="80dp"
                android:gravity="center"
                android:text="Play Game"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textColor="#ff0000"
                android:textStyle="italic" />
    
            <ImageView
                android:id="@+id/imageView"
                android:layout_width="wrap_content"
                android:layout_height="80dp"
                android:src="@drawable/messi" />
    
        </LinearLayout>
    
    </RelativeLayout>