Можно ли задать поле или дополнение для изображения, которое мы добавили с помощью android:drawableLeft
?android: drawableLeft margin и/или padding
ответ
TextView имеет android:drawablePadding свойство, которое должно сделать трюк:
андроида: drawablePadding
обивке между и вводимого коэффициента текста.
Должно быть значение измерения, которое представляет собой число с плавающей запятой, добавленное с единицей, такой как «14,5 сП». Доступными единицами являются: px (пиксели), dp (не зависящие от плотности пиксели), sp (масштабированные пиксели на основе предпочтительного размера шрифта ), в дюймах, мм (в миллиметрах).
Это также может быть ссылка на ресурс (в виде «@ [пакет:] тип: имя») или атрибут тема (в виде «? [Пакет:] [Тип:] Имя») содержащий значение этого типа.
Это соответствует символу ресурса глобального атрибута drawablePadding.
android:drawablePadding
будет создавать только пробел между текстом и рисунком, если кнопка достаточно мала, чтобы сжать 2 вместе. Если ваша кнопка более широкая, чем объединенная ширина (для drawableLeft/drawableRight) или высота (для drawableTop/drawableBottom), то drawablePadding ничего не делает.
Я тоже борюсь с этим прямо сейчас. Мои кнопки довольно широкие, и значок висит на левом краю кнопки, а текст центрируется посередине. Мой единственный способ обойти это сейчас - это испечь на подиуме на рисовании, добавив пустые пиксели в левый край холста с помощью Photoshop. Не идеально, и не рекомендуется. Но на данный момент это решение для остановки работы, за исключением восстановления TextView/Button.
спасибо за объяснения моей проблемы. Я не понял, что это вызвано только тогда, когда кнопка достаточно широкая. –
Как указано в кефе, 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" />
android: paddingLeft = "30dip" android: paddingRight = "26dip" являются ключевыми здесь! –
это не связано с вопросом, но андроид: gravity = "center" сохранит текст, выровненный с центром вытягиваемого! – cwhsu
Что делать, если у нас есть чертежи как слева, так и справа, и нужно только отрегулировать правильное рисование ?? – nmxprime
Вместо кнопки использовать LinearLayout с ImageView и TextView внутри. В дочерних элементах, таких как ImageView и TextView, используйте android: duplicateParentState = "true".
Вам понадобится FrameLayout и кнопка (и ImageView/TextView внутри собственного LinearLayout), чтобы воспроизвести пользовательский интерфейс Button и перенести onclicklistener() на часть кнопки. – 3c71
Зачем использовать дополнительный макет, если у вас уже есть drawablePadding в TextView. –
Пытается использовать отрицательные отступы
Как:
android:paddingLeft="-8dp"
определить форму вашего 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 некоторый стиль плюс маржа к drawableLeft.
его хорошее решение, спасибо! –
Сделайте вытяжке 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>
Хорошее решение для этого. –
Спасибо вам, парень! Это решение позволяет мне тратить много времени. – emaleavil
@ The Finest Artist У меня есть встроенная вставка, и она отлично работает для более новых версий. Я имею в виду, что он не работает в SDK 16, 17, а работает в SDK 23. Есть ли идеи? –
android:drawablePadding
это самый простой способ, чтобы дать отступы к вытяжке иконе, но Вы не можете дать конкретную одну сторону отступы как paddingRight
или paddingLeft
из растяжимой icon.To добиться того, что у вас есть копаться в нем. И если вы примените paddingLeft
или paddingRight
до Edittext
, тогда он поместит отступы на весь Edittext
вместе с выталкиваемой иконой.
Вы можете использовать android:drawableLeft="@drawable/your_icon"
, чтобы установить выпадающий, который будет показан слева. Чтобы установить прописку для рисования, вы должны использовать android:paddingLeft
или android:paddingRight
для установки соответственно левой и правой прокладки.
android:paddingRight="10dp"
android:paddingLeft="20dp"
android:drawableRight="@drawable/ic_app_manager"
Вы можете использовать отступы для кнопки, и вы можете играть с 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" />
вы можете использовать специальные отступы зависят, где поставить вытяжку, с андроидом: paddingLeft = «10dp» или андроид : paddingBottom = "10dp" или андроид: paddingRight = "10dp" или андроид: paddingTop = "10dp"
Если размер вытяжки Ресурса фиксирован, вы можете сделать так:
<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.
Да. использовать 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 файл, как это, назовите его 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"
/>
textView.setCompoundDrawablesWithIntrinsicBounds(AppCompatResources.getDrawable(this,drawable),null,null,null);
addressTitleView.setCompoundDrawablePadding();
Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество вашего после. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. –
Рад быть двухсотый как –