web-dev-qa-db-fra.com

Le rembourrage ne fonctionne pas sur ImageButton

Dans une application sur laquelle je travaille, j'ai plusieurs boutons ImageButtons. Chaque ImageButton a un arrière-plan et un contenu sous la forme d'un dessin. Pour le moment, la taille du dessin est au maximum dans les limites du ImageButton, mais je veux qu'il soit réduit, donc j'ai besoin d'ajouter un peu de remplissage. Le fait est que lorsque j'essaie de faire cela, cela n'a aucun effet. Mon XML est comme suit pour chaque 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" />

Des idées pour lesquelles le rembourrage ne fait rien?

Code XML complet:

<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>

42
Zero

Vous devez ajouter à votre définition ImageButton

Android:scaleType="fitCenter"

ou un autre type d'échelle comme fitXY, car, par défaut, l'image tente de redimensionner autant que possible et ignore le remplissage

103
Gooziec

Le remplissage n'a d'effet que sur l'attribut Android:src et non sur le Android:background.

Définissez le premier sur votre image de bouton et le dernier sur Android:background="@Android:color/transparent"

0
PJ_Finnegan