Можно ли задать поле или дополнение для изображения, которое мы добавили с помощью android:drawableLeft
?
Android: marginable margin и/или дополнение
Ответ 1
В качестве упомянутого 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" />
Ответ 2
TextView имеет свойство android:drawablePadding, которое должно сделать трюк:
Android: drawablePadding
Прокладка между чертежами и текстом.
Должно быть значение измерения, которое добавляется числом с плавающей запятой с единицей, такой как "14,5 сП". Доступными единицами являются: px (pixels), dp (не зависящие от плотности пиксели), sp (масштабированные пиксели на основе предпочтительных размер шрифта), дюймы (мм), мм (миллиметры).
Это также может быть ссылка на ресурс (в форме "@[package:] type: name" ) или атрибут темы (в форме "? [package:] [type:] name" ), содержащий значение этого типа.
Это соответствует символу ресурса глобального атрибута drawablePadding.
Ответ 3
android:drawablePadding
создаст только пробел между текстом и вытягиванием, если кнопка достаточно мала, чтобы сжать 2 вместе. Если ваша кнопка более широкая, чем объединенная ширина (для drawableLeft/drawableRight) или высота (для drawableTop/drawableBottom), то drawablePadding ничего не делает.
Я тоже борюсь с этим сейчас. Мои кнопки довольно широкие, и значок висит на левом краю кнопки, а текст центрируется посередине. Мой единственный способ обойти это сейчас - это испечь на подиуме на рисовании, добавив пустые пиксели в левый край холста с помощью Photoshop. Не идеально, и не рекомендуется. Но на этот раз мое решение для остановки доступа, за исключением восстановления TextView/Button.
Ответ 4
Да. используйте 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" />
Ответ 5
Сделайте свой 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>
Ответ 6
android:drawablePadding
- это самый простой способ дать отступы для рисования значка, но вы не можете указывать конкретную боковую набивку, например, paddingRight
или paddingLeft
рисованной иконки. Чтобы достичь этого, вам нужно в нее копать.
И если вы примените paddingLeft
или paddingRight
к Edittext
, то он поместит отступ на весь Edittext
вместе с рисунком.
Ответ 7
определить форму для вашего 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>
Прокладка, определенная в этой форме, поможет вставить отступы для drawableleft или right ---------------------- Применить эту форму в 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 некоторый стиль плюс margin для drawableLeft.
Ответ 8
<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 заданное значение, отступ будет измеряться.
Ответ 9
Вместо Button
используйте LinearLayout
с ImageView
и TextView
внутри. В дочерних элементах, таких как ImageView
и TextView
используйте android:duplicateParentState="true"
.
Ответ 10
Я тоже брошу свой ответ на ринг. Если вы хотите сделать это программно, вы можете сделать следующее.
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.
Ответ 11
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"/>
Ответ 12
Вы можете использовать отступы для кнопки, и вы можете играть с 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"
Ответ 13
Вам следует рассмотреть возможность использования списка слоев
Создайте файл с рисунком, подобный этому, назовите его как 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"
/>
Ответ 14
Вы можете использовать android:drawableLeft="@drawable/your_icon"
, чтобы установить drawable, который будет показан слева. Чтобы установить прописку для рисования, вы должны использовать android:paddingLeft
или android:paddingRight
, чтобы соответственно отрегулировать добавление влево/вправо.
android:paddingRight="10dp"
android:paddingLeft="20dp"
android:drawableRight="@drawable/ic_app_manager"
Ответ 15
Если размер извлекаемой resouce фиксирован, вы можете сделать вот так:
<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.
Ответ 16
textView.setCompoundDrawablesWithIntrinsicBounds(AppCompatResources.getDrawable(this,drawable),null,null,null);
addressTitleView.setCompoundDrawablePadding();
Ответ 17
просто переделать из:
<?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>
Ответ 18
Пытается использовать отрицательное дополнение
Вроде:
android:paddingLeft="-8dp"