#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. спасибо, но нет, мне нужно использовать кнопку «Материал», так как компания просит меня об этом.