Можно ли установить поле или отступ для изображения, которое мы добавили с помощью android:drawableLeft
?
Можно ли установить поле или отступ для изображения, которое мы добавили с помощью android:drawableLeft
?
Ответы:
Как упоминалось выше, cephus android:drawablePadding
будет принудительно заполнять текст и рисование только в том случае, если кнопка достаточно мала.
При размещении кнопок большего размера вы можете использовать их android:drawablePadding
в сочетании с android:paddingLeft
и android:paddingRight
для принудительного ввода текста и рисования внутрь по направлению к центру кнопки. Регулируя левый и правый отступы по отдельности, вы можете сделать очень подробные настройки макета.
Вот пример кнопки, которая использует отступы для сближения текста и значка ближе, чем они были бы по умолчанию:
<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" />
passwordToggleDrawable
увеличению разрыва левого отступа, поскольку он не может указывать только конкретную цель для рисования слева.
TextView имеет свойство android: drawablePadding, которое должно помочь:
андроид: drawablePadding
Отступ между рисованными объектами и текстом.
Должно быть значением измерения, которое представляет собой число с плавающей точкой, к которому добавляется единица, такая как «14.5sp». Доступные единицы измерения: px (пиксели), dp (пиксели, не зависящие от плотности), sp (масштабированные пиксели на основе предпочтительного размера шрифта), дюймы (дюймы), мм (миллиметры).
Это также может быть ссылка на ресурс (в форме «@ [package:] type: name») или атрибут темы (в форме «? [Package:] [type:] name»), содержащий значение этого типа ,
Это соответствует глобальному атрибуту ресурса символа drawablePadding.
android:drawablePadding
создаст пробел между текстом и рисованием только в том случае, если кнопка достаточно мала, чтобы сложить 2 вместе. Если ваша кнопка шире, чем объединенная ширина (для drawableLeft / drawableRight) или высота (для drawableTop / drawableBottom), тогда drawablePadding ничего не делает.
Я борюсь с этим и сейчас. Мои кнопки довольно широкие, значок висит на левом краю кнопки, а текст посередине. Мой единственный способ обойти это сейчас - запекать с полями для рисования, добавляя пустые пиксели к левому краю холста с помощью Photoshop. Не идеально, и не очень рекомендуется. Но это мое временное решение, если не считать перестройки TextView / Button.
Да. используйте drawablePadding следующим образом,
<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" />
Сделайте свой 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>
android:drawablePadding
это самый простой способ добавить отступ для нарисованного значка, но вы не можете назначить конкретный односторонний отступ, например, paddingRight
или paddingLeft
для нарисованного значка. Чтобы добиться этого, вам нужно копаться в нем. И если вы подаете заявление paddingLeft
или paddingRight
в Edittext
то место будет отступы ко всему Edittext
вместе с растяжимым значком.
определите форму для вашего текста редактирования и дайте ему отступ. Например
<?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>
Заполнение, определенное в этой форме, поможет придать отступу нарисованному левому или правому краю ---------------------- Примените эту форму в EditView
<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"
/>
использование этой определенной формы в качестве фона придаст вашему EditText стиль и поле для drawableLeft.
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"/>
<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"/>
примечание: layout_width должно быть wrap_content и использовать paddingLeft paddingRight drawablePadding для контроля зазора. Если вы укажете значение layout_width, в котором будет разрыв между значком и текстом, я думаю, что однажды передайте layout_width заданное значение, отступ будет измеряться.
Я тоже брошу свой ответ на ринг. Если вы хотите сделать это программно, вы можете сделать следующее.
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);
Это добавит заполнение к концу рисования, где конец будет означать влево / вправо в зависимости от того, находится ли телефон в LTR или RTL.
Вместо Button
использования LinearLayout
с ImageView
и TextView
внутри. В детских вещах любят ImageView
и TextView
используют android:duplicateParentState="true"
.
Вы должны рассмотреть возможность использования layer-list
Создайте подобный файл для рисования, назовите его 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"
/>
Вы можете использовать отступы для кнопки и играть с 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" />
Вы можете использовать конкретный отступ, в зависимости от того, где вы хотите нарисовать, с помощью android: paddingLeft = "10dp" или android: paddingBottom = "10dp" или android: paddingRight = "10dp" или android: paddingTop = "10dp"
Вы можете использовать android:drawableLeft="@drawable/your_icon"
для отображения рисунка слева. Чтобы установить отступ для рисования, вы должны использовать android:paddingLeft
или, android:paddingRight
чтобы установить отступ слева / справа соответственно.
android:paddingRight="10dp"
android:paddingLeft="20dp"
android:drawableRight="@drawable/ic_app_manager"
Если размер нарисованного ресурса фиксирован, вы можете сделать это так:
<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.
textView.setCompoundDrawablesWithIntrinsicBounds(AppCompatResources.getDrawable(this,drawable),null,null,null);
addressTitleView.setCompoundDrawablePadding();
просто переделать из:
<?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/_2dp"
android:left="@dimen/_2dp"
android:bottom="@dimen/_2dp"
android:top="@dimen/_2dp"
>
<shape
xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="40dp"/>
<solid android:color="@android:color/white"/>
</shape>
</item>
</layer-list>
Пытается использовать отрицательный отступ
Подобно:
android:paddingLeft="-8dp"