Ist es möglich, den Rand oder die Auffüllung für das Bild festzulegen, das wir mit der Option android:drawableLeft
?
Antworten
Zu viele Anzeigen?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" />
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.
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.
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>
- See previous answers
- Weitere Antworten anzeigen