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 ?

39voto

Bhargav Thanki Punkte 4728

android:drawablePadding ist der einfachste Weg, um ein zeichenbares Icon aufzupolstern, aber Sie können nicht nur eine Seite aufpolstern wie paddingRight o paddingLeft Um das zu erreichen, müssen Sie sich mit dem Thema auseinandersetzen. Und wenn Sie die paddingLeft o paddingRight a Edittext dann wird der gesamte Bereich aufgefüllt Edittext zusammen mit einem zeichenbaren Symbol.

30voto

VikasSharmalp Punkte 474

android:drawablePadding ist der einfachste Weg, um ein zeichenbares Icon aufzupolstern, aber Sie können nicht nur eine Seite aufpolstern wie paddingRight o paddingLeft Um das zu erreichen, müssen Sie sich mit dem Thema auseinandersetzen. Und wenn Sie die paddingLeft o paddingRight a EditText dann wird der gesamte Bereich aufgefüllt EditText zusammen mit einem zeichenbaren Symbol.

<TextView android:layout_width="match_parent"
    android:padding="5dp"
    android:id="@+id/date"
    android:gravity="center|start"
    android:drawableEnd="@drawable/ic_calendar"
    android:background="@drawable/edit_background"
    android:hint="Not Selected"
    android:drawablePadding="10dp"
    android:paddingStart="10dp"
    android:paddingEnd="10dp"
    android:textColor="@color/black"
    android:layout_height="wrap_content"/>

15voto

Umesh N Punkte 211

Definieren Sie eine Form für Ihren Editiertext und geben Sie ihm einen Abstand. 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>

Das in dieser Form definierte Padding hilft dabei, dem Drawableleft oder -right Padding zu geben ---------------------- Diese Form auf EditView anwenden

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

Die Verwendung dieser definierten Form als Hintergrund verleiht dem EditText einen gewissen Stil und einen Abstand zu drawableLeft.

14voto

王良海 Punkte 181
<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"/>

Hinweis: layout_width muss wrap_content sein und paddingLeft paddingRight drawablePadding verwenden, um den Abstand zu kontrollieren. Wenn Sie angeben, layout_width Wert wird Lücke zwischen Symbol und Text hat, ich denke, einmal geben die layout_width einen Wert angeben, wird das Padding messen.

12voto

Daniel Ochoa Punkte 1783

Ich werde meine Antwort ebenfalls in den Ring werfen. Wenn Sie dies programmatisch tun 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 das Padding am Ende der Zeichenfläche hinzugefügt, wobei "Ende" links/rechts bedeutet, je nachdem, ob das Telefon in LTR oder RTL ist.

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