Ist es möglich, den Rand oder das Auffüllen für das Bild festzulegen, das wir mit dem Android:drawableLeft
hinzugefügt haben?
Wie bereits in Cephus erwähnt, wird Android:drawablePadding
nur dann aufgefüllt, wenn der Button klein genug ist.
Bei der Anordnung größerer Schaltflächen können Sie Android:drawablePadding
in Verbindung mit Android:paddingLeft
und Android:paddingRight
verwenden, um den Text nach innen und nach innen in die Mitte der Schaltfläche zu zeichnen. Durch das separate Anpassen der linken und rechten Polsterung können Sie sehr detaillierte Einstellungen am Layout vornehmen.
Im Folgenden finden Sie eine Beispielschaltfläche, die durch Auffüllen den Text und das Symbol näher zusammenstoßen als standardmäßig:
<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 verfügt über eine Android: drawablePadding -Eigenschaft, die den Trick erfüllen sollte:
Android: drawablePadding
Die Auffüllung zwischen den Zeichenelementen und dem Text.
Muss ein Dimensionswert sein, bei dem es sich um eine Fließkommazahl handelt mit einer Einheit wie "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 (in der Form "@ [Package:] type: name") oder ein Designattribut (in der Form "? [Package:] [type:] name") sein. einen Wert dieses Typs enthalten.
Dies entspricht dem globalen Attributressourcensymbol drawablePadding.
Android:drawablePadding
erstellt nur dann eine Auffülllücke zwischen Text und Zeichen, wenn die Schaltfläche klein genug ist, um die 2 zusammenzuquetschen. Wenn Ihre Schaltfläche breiter als die kombinierte Breite (für drawableLeft/drawableRight) oder die Höhe (für drawableTop/drawableBottom) ist, führt drawablePadding nichts aus.
Ich kämpfe jetzt auch damit. Meine Schaltflächen sind ziemlich breit und das Symbol hängt am linken Rand der Schaltfläche, und der Text wird in der Mitte zentriert. Meine einzige Möglichkeit, dies zu umgehen, war bisher, einen Rand des Zeichnungsbereichs zu backen, indem leere Pixel mit Photoshop am linken Rand der Leinwand hinzugefügt wurden. Nicht ideal und auch nicht wirklich zu empfehlen. Aber das ist jetzt meine Stop-gap-Lösung, nur TextView/Button neu zu erstellen.
Ja. drawablePadding wie folgt verwenden,
<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" />
Android:drawablePadding
ist der einfachste Weg, um ein Zeichen-Symbol mit Auffüllungen zu versehen, aber Sie können keine bestimmte Seitenauffüllung wie paddingRight
oder paddingLeft
von Zeichen-Symbolen geben Wenn Sie paddingLeft
oder paddingRight
auf Edittext
anwenden, wird der gesamte Edittext
-Einsatz zusammen mit dem Zeichenelement aufgefüllt.
Machen Sie Ihre zeichnungsfähigen Ressourcen.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>
definieren Sie eine Form für Ihren Edittext und geben Sie eine Auffüllung ein Zum Beispiel
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle" >
<padding
Android:left="5dp"
Android:right="5dp"
/>
<solid Android:color="#F6F6F6" />
<stroke
Android:width="1px"
Android:color="#C3C3C3" />
<corners
Android:bottomLeftRadius="1dp"
Android:bottomRightRadius="1dp"
Android:topLeftRadius="1dp"
Android:topRightRadius="1dp" />
</shape>
Die in dieser Form definierte Polsterung hilft, die Polsterung nach rechts oder nach rechts darzustellen ---------------------- Wenden Sie diese Form in EditView an
<EditText
Android:id="@+id/example"
Android:layout_width="fill_parent"
Android:layout_height="36dp"
Android:layout_marginLeft="10dp"
Android:layout_marginRight="10dp"
Android:background="@drawable/shape2"
Android:drawableLeft="@drawable/icon1"
Android:drawablePadding="@dimen/txtDrwblPadding"
Android:ems="10"
/>
wenn Sie diese definierte Form als Hintergrund verwenden, erhält Ihr EditText einen Stil plus Rand für drawableLeft.
Anstelle von Button
verwenden Sie LinearLayout
mit ImageView
und TextView
. In untergeordneten Elementen wie ImageView
und TextView
verwenden Sie Android:duplicateParentState="true"
.
<TextView
Android:layout_width="wrap_content"
Android:layout_height="32dp"
Android:background="@drawable/a"
Android:drawableLeft="@drawable/concern_black"
Android:gravity="center"
Android:paddingLeft="10dp"
Android:paddingRight="10dp"
Android:drawablePadding="10dp"
Android:text="text"/>
anmerkung: layout_width muss wrap_content sein und paddingLeft paddingRight drawablePadding verwenden, um die Lücke zu steuern. Wenn Sie den Wert für layout_width angeben, wird die Lücke zwischen Symbol und Text liegen, denke ich, sobald der Wert für layout_width einen bestimmten Wert angibt, wird der Abstand gemessen.
Sie können eine Auffüllung für die Schaltfläche verwenden und mit drawablePadding spielen
<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" />
sie können eine bestimmte Polsterung verwenden, wo sich Ihre Zeichnung befindet, mit Android: paddingLeft = "10dp" oder Android: paddingBottom = "10dp" oder Android: paddingRight = "10dp" oder Android: paddingTop = "10dp"
Ich werde meine Antwort auch in den Ring werfen. Wenn Sie dies programmgesteuert ausführen möchten, können Sie Folgendes tun.
final Drawable drawable = ContextCompat.getDrawable(getContext(), R.drawable.somedrawable);
final boolean isLTR = ViewCompat.LAYOUT_DIRECTION_LTR == ViewCompat.getLayoutDirection(this);
final int iconInsetPadding = getResources().getDimensionPixelSize(R.dimen.icon_padding);
final Drawable insetDrawable = new InsetDrawable(drawable, isLTR ? 0 : iconInsetPadding, 0, isLTR ? iconInsetPadding : 0, 0);
Dadurch wird die Auffüllung am Ende des Zeichenbereichs hinzugefügt, wobei Ende links/rechts bedeutet, je nachdem, ob sich das Telefon in LTR oder RTL befindet.
Sie sollten die Layer-Liste verwenden
Erstellen Sie eine gezeichnete Datei wie diese und nennen Sie sie 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>
Unter Layoutdatei
<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"
/>
Android: drawablePadding ist der einfachste Weg, um dem Zeichen-Symbol eine Polsterung zu geben. Sie können jedoch keine spezifischen Polsterungen für eine Seite wie paddingRight oder paddingLinks des Zeichen-Symbols festlegen. Und wenn Sie paddingLeft oder paddingRight auf Edittext anwenden, wird der gesamte Edittext mit dem Zeichen-Symbol aufgefüllt.
<TextView Android:layout_width="match_parent"
Android:padding="5sp"
Android:id="@+id/date"
Android:gravity="center|start"
Android:drawableEnd="@drawable/ic_calendar"
Android:background="@drawable/edit_background"
Android:hint="Not Selected"
Android:drawablePadding="10sp"
Android:paddingStart="10sp"
Android:paddingEnd="10sp"
Android:textColor="@color/black"
Android:layout_height="wrap_content"/>
Mit Android:drawableLeft="@drawable/your_icon"
können Sie festlegen, dass die Zeichenfläche auf der linken Seite angezeigt wird. Um eine Auffüllung für das Drawable festzulegen, verwenden Sie Android:paddingLeft
oder Android:paddingRight
, um die linke/rechte Auffüllung festzulegen.
Android:paddingRight="10dp"
Android:paddingLeft="20dp"
Android:drawableRight="@drawable/ic_app_manager"
textView.setCompoundDrawablesWithIntrinsicBounds(AppCompatResources.getDrawable(this,drawable),null,null,null);
addressTitleView.setCompoundDrawablePadding();
Wenn die Größe der zu zeichnenden Ressource festgelegt ist, können Sie Folgendes tun:
<Button
Android:background="@drawable/rounded_button_green"
style="?android:attr/selectableItemBackground"
Android:layout_height="wrap_content"
app:layout_widthPercent="70%"
Android:drawableRight="@drawable/ic_clear_black_24dp"
Android:paddingRight="10dp"
Android:paddingLeft="34dp"
tools:text="example" />
Der Schlüssel hier ist das:
Android:drawableRight="@drawable/ic_clear_black_24dp"
Android:paddingRight="10dp"
Android:paddingLeft="34dp"
Das heißt, die Größe der zu zeichnenden Ressource plus paddingRight ist die paddingLeft.
nur remake von:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:Android="http://schemas.Android.com/apk/res/Android">
<corners Android:radius="40dp"/>
<solid Android:color="@Android:color/white"/>
</shape>
zu
<layer-list
xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item
Android:right="@dimen/xxxs"
Android:left="@dimen/xxxs"
Android:bottom="@dimen/xxxs"
Android:top="@dimen/xxxs"
>
<shape
xmlns:Android="http://schemas.Android.com/apk/res/Android">
<corners Android:radius="40dp"/>
<solid Android:color="@Android:color/white"/>
</shape>
</item>
</layer-list>