421

で追加した画像にマージンやパディングを設定することはできandroid:drawableLeftますか?

4

19 に答える 19

502

cephus が述べandroid:drawablePaddingたように、ボタンが十分に小さい場合にのみ、テキストとドローアブルの間のパディングが強制されます。

より大きなボタンをレイアウトするときは、とandroid:drawablePaddingを併用して、テキストとドローアブルをボタンの中心に向かって内側に強制することができます。左右のパディングを個別に調整することで、レイアウトを非常に詳細に調整できます。android:paddingLeftandroid:paddingRight

パディングを使用して、テキストとアイコンをデフォルトよりも近づけるボタンの例を次に示します。

<Button android:text="@string/button_label" 
    android:id="@+id/buttonId"
    android:layout_width="160dip"
    android:layout_height="60dip"
    android:layout_gravity="center"
    android:textSize="13dip"
    android:drawableLeft="@drawable/button_icon"
    android:drawablePadding="2dip"
    android:paddingLeft="30dip"
    android:paddingRight="26dip"
    android:singleLine="true"
    android:gravity="center" />  
于 2011-07-12T21:44:03.273 に答える
201

TextView には、トリックを行う必要があるandroid:drawablePaddingプロパティがあります。

Android:drawablePadding

ドローアブルとテキストの間のパディング。

「14.5sp」などの単位が追加された浮動小数点数であるディメンション値である必要があります。使用可能な単位は、px (ピクセル)、dp (密度に依存しないピクセル)、sp (優先フォント サイズに基づいてスケーリングされたピクセル)、in (インチ)、mm (ミリメートル) です。

これは、この型の値を含むリソース ("@[package:]type:name" の形式) またはテーマ属性 ("?[package:][type:]name" の形式) への参照である場合もあります。 .

これは、グローバル属性のリソース シンボル drawablePadding に対応します。

于 2010-07-26T17:58:31.323 に答える
68

android:drawablePaddingボタンが2つを一緒に押しつぶすのに十分小さい場合にのみ、テキストとドローアブルの間にパディングギャップが作成されます。ボタンの幅が幅 (drawableLeft/drawableRight の場合) または高さ (drawableTop/drawableBottom の場合) よりも広い場合、drawablePadding は何もしません。

私も今これで悩んでいます。私のボタンは非常に幅が広​​く、アイコンはボタンの左端にぶら下がっていて、テキストは中央に配置されています。今のところこれを回避する唯一の方法は、フォトショップでキャンバスの左端に空白のピクセルを追加して、ドローアブルの余白を焼き込むことです。理想的ではなく、あまりお勧めしません。しかし、TextView/Button を再構築するまでは、それが今のところ私の一時しのぎの解決策です。

于 2010-09-19T05:20:16.640 に答える
40

描画可能な resources.xml を作成します

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true">
        <inset android:drawable="@drawable/small_m" android:insetLeft="10dp" android:insetTop="10dp" />
    </item>
    <item>
        <inset android:drawable="@drawable/small_p" android:insetLeft="10dp" android:insetTop="10dp" />
    </item>
</selector>
于 2015-05-19T16:04:02.980 に答える
38

android:drawablePaddingpaddingRight描画可能なアイコンにパディングを与える最も簡単な方法ですが、描画可能なアイコンのような特定の片側パディングを与えることはできませんpaddingLeft.それを達成するには、それを掘り下げる必要があります. paddingLeftまたはpaddingRightを適用すると、描画可能なアイコンとともにEdittext全体にパディングが配置されます。Edittext

于 2015-07-21T11:02:12.867 に答える
8

と内側でButton使用LinearLayoutする代わりに。のような子アイテムで使用します。ImageViewTextViewImageViewTextViewandroid:duplicateParentState="true"

于 2013-02-13T09:50:07.857 に答える
5

レイヤーリストの使用を検討する必要があります

このようなドローアブル ファイルを作成し、ic_calendar.xml という名前を付けます。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle">
        <solid android:color="@android:color/transparent"/>
    </shape>
</item>
<item android:right="10dp">
    <bitmap android:gravity="center_vertical|left"
        android:src="@drawable/ic_calendar_16dp"
        android:tint="@color/red"
        />
</item>
</layer-list>

レイアウトファイルの下に、

<TextView
         android:id="@+id/tvDate"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:drawableLeft="@drawable/ic_calendar"
         android:textColor="@color/colorGrey"
         android:textSize="14sp" 
    />
于 2017-12-07T09:52:17.020 に答える
4

ボタンにパディングを使用でき、 drawablePadding で遊ぶことができます

 <Button
    style="@style/botonesMenu"
    android:padding="15dp"
    android:drawablePadding="-15dp"
    android:text="@string/actualizarBD"
    android:textAlignment="gravity"
    android:gravity="center"
    android:layout_row="1"
    android:layout_column="0"
    android:drawableTop="@drawable/actualizar"
    android:id="@+id/btnActualizar"
    android:onClick="actualizarBD" />

android:paddingLeft="10dp" または android:paddingBottom="10dp" または android:paddingRight="10dp" または android:paddingTop="10dp" を使用して、ドローアブルを置く場所に応じて特定のパディングを使用できます

于 2017-05-07T06:04:05.563 に答える
3

android:drawableLeft="@drawable/your_icon"左側に表示されるようにドローアブルを設定するために使用できます。ドローアブルのパディングを設定するには、android:paddingLeftまたはandroid:paddingRightを使用して左右のパディングをそれぞれ設定する必要があります。

android:paddingRight="10dp"
android:paddingLeft="20dp"
android:drawableRight="@drawable/ic_app_manager"
于 2016-10-28T13:08:28.427 に答える
-7

負のパディングを使用しようとします

お気に入り:

android:paddingLeft="-8dp"
于 2014-09-17T19:09:43.910 に答える