Заполнение кнопки Android Material между значком drawableLeft и текстом

#android #material-design #materialbutton

Вопрос:

Как сказано в теме, с помощью кнопки Material я хочу настроить расстояние между значком drawableLeft и текстом, я не хочу использовать значок, просто drawableLeft

По умолчанию значок drawableleft находится далеко от текста, я хочу сделать их ближе, но я не могу использовать значок и гравитацию значка. Если я использую значок и гравитацию значка, он не будет отображаться из-за стиля, который я использую, но если я изменю стиль, то возникнет еще одна проблема: под кнопкой будет тень. Мне не нужна тень, поэтому я должен использовать стиль.

Мне нужна кнопка «Материал», серый фон, значок слева, в центре текст, значок и текст закрыты, кнопка «Материал» находится в круглом углу, под кнопкой «Материал» нет тени. Вот код до сих пор:

 lt;?xml version="1.0" encoding="utf-8"?gt; lt;com.google.android.material.button.MaterialButton xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@ id/btnShortCut" style="@style/Button" android:layout_width="wrap_content" android:layout_height="36dp" android:orientation="vertical" android:layout_marginRight="10dp" app:backgroundTint="@color/background" app:cornerRadius="@dimen/cornerM" app:strokeColor="@color/primaryGrey" app:strokeWidth="0.5dp" android:padding="5dp" android:textColor="@color/secondaryText" android:textSize="@dimen/fontBody" gt;  lt;/com.google.android.material.button.MaterialButtongt;  lt;style name="Button" parent="Widget.MaterialComponents.Button.UnelevatedButton"gt;  lt;item name="android:textAllCaps"gt;falselt;/itemgt;  lt;item name="android:insetTop"gt;0dplt;/itemgt;  lt;item name="android:insetBottom"gt;0dplt;/itemgt;  lt;item name="android:gravity"gt;centerlt;/itemgt;  lt;item name="android:padding"gt;0dplt;/itemgt; lt;/stylegt;  

Комментарии:

1. Вы можете использовать android:layout_marginLeft , чтобы подтолкнуть рисунок ближе к тексту и сохранить некоторое пространство между рисунком и текстом (например, в случае использования центра тяжести), вы можете использовать android:drawablePadding , протестировать его и сообщить мне

2. Чтобы удалить тень с кнопки, добавьте к ней это style="?android:attr/borderlessButtonStyle"

3. Вы можете использовать приложение:iconPadding

Ответ №1:

Необходимо ли вам использовать кнопку «Материал»? Вы рассматривали возможность использования фреймового отображения с наложенным на него текстовым представлением?

В вашем примере это выглядело бы примерно так, но с некоторыми изменениями, так как я не совсем уверен, как вы хотите, чтобы это выглядело.

 lt;FrameLayout  android:id="@ id/btnShortCut"  android:layout_width="wrap_content"  android:layout_height="36dp"  android:layout_marginRight="10dp"   android:orientation="vertical"   android:gravity="center"  app:cornerRadius="@dimen/cornerM"  app:strokeColor="@color/primaryGrey"  app:strokeWidth="0.5dp"  android:padding="5dp"gt;   lt;TextView  android:layout_gravity="center"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_marginStart="15dp"  android:layout_marginEnd="15dp"  android:drawableStart="@drawable/lt;your icon heregt;"  android:drawablePadding="15dp"  android:textColor="@color/secondaryText"  android:textSize="@dimen/fontBody"/gt; lt;/FrameLayoutgt;  

Комментарии:

1. спасибо, но нет, мне нужно использовать кнопку «Материал», так как компания просит меня об этом.