Чи можна встановити поле або накладку для зображення, яке ми додали за допомогою android:drawableLeft
?
Чи можна встановити поле або накладку для зображення, яке ми додали за допомогою android:drawableLeft
?
Відповіді:
Як згадується цефус 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: dravablePadding, яка повинна зробити трюк:
android: dravablePadding
Прокладка між малюнком і текстом.
Повинно бути значенням розміру, яке є числом з плаваючою комою, додане до одиниці типу "14.5sp". Доступні одиниці: px (пікселі), dp (незалежні від щільності пікселі), sp (масштабовані пікселі на основі бажаного розміру шрифту), в (дюйми), mm (міліметри).
Це також може бути посилання на ресурс (у формі "@ [пакет:] тип: ім'я") або атрибут теми (у формі "? [Пакет:] [тип:] ім'я"), що містить значення цього типу .
Це відповідає глобальному символу ресурсу атрибута dravablePadding.
android:drawablePadding
створить пробіл між текстом і малюнком лише у тому випадку, якщо кнопка достатньо маленька, щоб склеїти два разом. Якщо ваша кнопка ширша за комбіновану ширину (для dravableLeft / drawableRight) або висоту (для dravableTop / dravableBottom), то dravablePadding нічого не робить.
Я борюся з цим і зараз. Мої кнопки досить широкі, а значок висить на лівому краю кнопки, а текст - по центру. На даний момент єдиним способом обійти це було випікати з полями на малюнку, додавши порожні пікселі до лівого краю полотна за допомогою фотошопу. Не ідеально, і не дуже рекомендується. Але це моє рішення про затримку розриву на даний момент, окрім відновлення TextView / Button.
Так. використовувати DravablePadding наступним чином,
<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" />
Створіть свої ресурси .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 деякий стиль плюс поле для DravableLeft.
android: dravablePadding - це найпростіший спосіб надати набивання малювальному значку, але ви не можете надати певну сторону, наприклад paddingRight або paddingLeft of Dravable icon. І якщо ви застосуєте paddingLeft або paddingRight до Edittext, він помістить padding до всього 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"
.
Слід розглянути можливість використання списку шарів
Створіть такий файл, який можна створити, назвіть його як 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"
/>
Ви можете використовувати підкладку для кнопки, а також можете пограти з dravablePadding
<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"