436 Stimmen

Android:drawableLeft margin und/oder padding

Ist es möglich, den Rand oder die Auffüllung für das Bild festzulegen, das wir mit der Option android:drawableLeft ?

518voto

Jordan Punkte 5953

Wie cephus erwähnte android:drawablePadding erzwingt nur dann ein Padding zwischen dem Text und dem Drawable, wenn die Schaltfläche klein genug ist.

Beim Anlegen größerer Schaltflächen können Sie android:drawablePadding in Verbindung mit android:paddingLeft y android:paddingRight um den Text und die Zeichenfläche nach innen in die Mitte der Schaltfläche zu zwingen. Indem Sie die linke und rechte Auffüllung separat einstellen, können Sie das Layout sehr detailliert anpassen.

Hier ein Beispiel für eine Schaltfläche, bei der der Text und das Symbol mit Hilfe von Auffüllungen näher zusammengerückt werden, als dies standardmäßig der Fall ist:

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

210voto

Cheryl Simon Punkte 45901

TextView hat eine Android:drawablePadding Eigenschaft, die das Problem lösen sollte:

Android:drawablePadding

Der Abstand zwischen den Zeichenflächen und dem Text.

Muss ein Dimensionswert sein, d. h. eine angehängte Gleitkommazahl mit einer Einheit wie z. B. "14.5sp". Verfügbare Einheiten sind: px (Pixel), dp (dichteunabhängige Pixel), sp (skalierte Pixel basierend auf der bevorzugten Schriftgröße), in (Zoll), mm (Millimeter).

Dies kann auch ein Verweis auf eine Ressource sein (in der Form "@[Paket:]Typ:Name") oder ein Themenattribut (in der Form "?[Paket:][Typ:]Name") sein, das einen Wert dieses Typs enthält.

Dies entspricht dem Symbol für das globale Attribut resource drawablePadding.

69voto

cephus Punkte 1987

android:drawablePadding erzeugt nur dann eine Lücke zwischen dem Text und der Zeichenfläche, wenn die Schaltfläche klein genug ist, um die beiden zusammenzuquetschen. Wenn Ihre Schaltfläche breiter ist als die kombinierte Breite (für drawableLeft/drawableRight) oder Höhe (für drawableTop/drawableBottom) dann drawablePadding tut nichts.

Damit habe ich im Moment auch zu kämpfen. Meine Schaltflächen sind recht breit, und das Symbol hängt am linken Rand der Schaltfläche und der Text ist in der Mitte zentriert. Mein einziger Weg, um dies zu umgehen, war bisher, einen Rand auf der Zeichenfläche zu backen, indem ich leere Pixel am linken Rand der Leinwand mit Photoshop hinzufügte. Nicht ideal, und auch nicht wirklich empfehlenswert. Aber das ist meine Stop-Gap-Lösung für jetzt, kurz der Wiederaufbau TextView/Button.

50voto

Parinda Rajapaksha Punkte 2466

Ja. verwenden drawablePadding wie folgt,

<TextView
        android:id="@+id/tvHeader"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Settings and Contents"
        android:drawableLeft="@drawable/icon_success"
        android:drawablePadding="10dp" />

43voto

The Finest Artist Punkte 3042

Erstellen Sie Ihre drawable 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>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X