android: drawableLeft margin и / или padding - PullRequest
337 голосов
/ 26 июля 2010

Можно ли установить поле или отступ для изображения, которое мы добавили с помощью android:drawableLeft?

Ответы [ 18 ]

4 голосов
/ 07 мая 2017

Вы можете использовать отступы для кнопки, и вы можете играть с 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" />

, вы можете использовать определенный отступ, зависит от того, куда поместите ваш drawable, с android: paddingLeft = "10dp" или android: paddingBottom= "10dp" или Android: paddingRight = "10dp" или Android: paddingTop = "10dp"

3 голосов
/ 07 декабря 2017

Вы должны рассмотреть возможность использования списка слоев

Создайте подобный файл для рисования, назовите его 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" 
    />
2 голосов
/ 13 июня 2019

android: drawablePadding - это самый простой способ добавить отступ для нарисованного значка, но вы не можете назначить конкретный односторонний отступ, например paddingRight или paddingLeft рисованного значка. Чтобы добиться этого, вам нужно копаться в нем. И если вы примените paddingLeft или paddingRight к Edittext, тогда он поместит заполнение на весь Edittext вместе с нарисованным значком.

<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"/>
2 голосов
/ 28 октября 2016

Вы можете использовать android:drawableLeft="@drawable/your_icon", чтобы установить чертеж, который будет показан слева.Чтобы установить отступ для рисованного элемента, вы должны использовать android:paddingLeft или android:paddingRight для установки левого / правого заполнения соответственно.

android:paddingRight="10dp"
android:paddingLeft="20dp"
android:drawableRight="@drawable/ic_app_manager"
1 голос
/ 15 мая 2017

Если размер нарисованного ресурса фиксирован, вы можете сделать это так:

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

Ключ в том, что:

    android:drawableRight="@drawable/ic_clear_black_24dp"
    android:paddingRight="10dp"
    android:paddingLeft="34dp"

То есть размер извлекаемого ресурса плюс paddingRight равен paddingLeft.

Вы можете увидеть результат в этом примере

0 голосов
/ 12 марта 2019

просто переделать из:

<?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>

в

<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>
0 голосов
/ 17 сентября 2014

Пытается использовать отрицательные отступы

Как:

android:paddingLeft="-8dp"
0 голосов
/ 03 марта 2018
textView.setCompoundDrawablesWithIntrinsicBounds(AppCompatResources.getDrawable(this,drawable),null,null,null);

addressTitleView.setCompoundDrawablePadding();
...