Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Padding not working on ImageButton

In an app I am working on, I have several ImageButtons. Each ImageButton has a background and content in the form of a drawable. Right now the drawable is at maximum size within the confines of the ImageButton, but I want it to scale down so I need to add some padding. The thing is that when I try to do that, it doesn't have any effect. My XML is as follows for each ImageButton:

<ImageButton     android:id="@+id/button_zero"     android:layout_width="0dip"     android:layout_height="wrap_content"     android:layout_weight="1"     android:padding="10dip"     android:src="@drawable/button_zero"     android:background="@drawable/button_background" /> 

Any ideas why the padding doesn't do anything?

Full XML code:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:background="#222222"     tools:context=".Main" >      <LinearLayout         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:orientation="vertical" >          <!-- Row One -->         <LinearLayout             android:layout_width="match_parent"             android:layout_height="wrap_content"             android:orientation="horizontal" >             <ImageButton                 android:id="@+id/button_zero"                 android:layout_width="0dip"                 android:layout_height="wrap_content"                 android:layout_weight="1"                 android:padding="10dip"                 android:src="@drawable/button_zero"                 android:background="@drawable/button_front" />             <ImageButton                 android:id="@+id/button_one"                 android:layout_width="0dip"                 android:layout_height="wrap_content"                 android:layout_weight="1"                 android:padding="10dip"                 android:src="@drawable/button_one"                 android:background="@drawable/button_front" />             <ImageButton                 android:id="@+id/button_two"                 android:layout_width="0dip"                 android:layout_height="wrap_content"                 android:layout_weight="1"                 android:padding="10dip"                 android:src="@drawable/button_two"                 android:background="@drawable/button_front" />             <ImageButton                 android:id="@+id/button_three"                 android:layout_width="0dip"                 android:layout_height="wrap_content"                 android:layout_weight="1"                 android:padding="10dip"                 android:src="@drawable/button_three"                 android:background="@drawable/button_front" />             <ImageButton                 android:id="@+id/button_four"                 android:layout_width="0dip"                 android:layout_height="wrap_content"                 android:layout_weight="1"                 android:padding="10dip"                 android:src="@drawable/button_four"                 android:background="@drawable/button_front" />         </LinearLayout>          ... same for other rows      </LinearLayout> 

like image 641
Zero Avatar asked Dec 12 '13 14:12

Zero


2 Answers

You have to add to Your ImageButton definition

android:scaleType="fitCenter" 

or other scaleType like fitXY, because by default image try to scale as much as possible and ignore padding

like image 179
Gooziec Avatar answered Sep 22 '22 15:09

Gooziec


The padding only has effect on the android:src attribute, not on the android:background.

Set the first to your button image and the latter to android:background="@android:color/transparent"

like image 35
PJ_Finnegan Avatar answered Sep 23 '22 15:09

PJ_Finnegan