web-dev-qa-db-ja.com

ImageButtonでパディングが機能しない

作業中のアプリには、複数のImageButtonがあります。各ImageButtonには、ドロアブルの形式で背景とコンテンツがあります。現時点では、DrawableはImageButtonの範囲内で最大サイズになっていますが、縮小して欲しいので、パディングを追加する必要があります。問題は、それを行おうとしても効果がないということです。私のXMLは、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" />

パディングが何もしない理由は何ですか?

完全なXMLコード:

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

ImageButton定義に追加する必要があります

Android:scaleType="fitCenter"

または、fitXYなどの他のscaleType。デフォルトでは画像は可能な限り拡大縮小し、パディングを無視するためです。

106
Gooziec

パディングは、Android:src属性ではなく、Android:background属性に対してのみ効果があります。

最初をボタン画像に設定し、後者をAndroid:background="@Android:color/transparent"に設定します

0
PJ_Finnegan