Как сделать кнопки округленными с помощью Material Design Theming? - PullRequest
0 голосов
/ 06 апреля 2020

Я хочу, чтобы моя кнопка имела закругленные углы, такие как:

Rounded Button // Изображение взято с Google

Для достижения этой цели с тематикой материала в android для установки: shapeAppearanceSmallComponent для угла rounded.

Но установка shapeAppearanceSmallComponent также влияет на все другие компоненты, такие как EditText, поэтому теперь они также округляются.

Поэтому вместо того, чтобы установить shapeAppearanceSmallComponent, я создал shapeMaterialOverlay. Установите для этого наложения значение buttonStyle и установите стиль кнопки в теме в качестве стиля кнопки по умолчанию.

Это работает, но только для кнопок по умолчанию. Если бы мне нужно было TextButton как таковое:

<Button
    ...
    style="@style/Widget.MaterialComponents.Button.TextButton"/>

TextButton не будет разыграно. В качестве обходного пути я создал стиль MyTextButton, который расширяется от TextButton, и также установил там shapeOverlay.

, так что теперь, если мне нужен TextButton, я сделаю:

<Button
    ...
    style="@style/Widget.MaterialComponents.Button.MyTextButton"/>

.

Я должен сделать это для всех других типов кнопок. Мне было интересно, является ли этот подход правильным, и если нет, кто-нибудь может подсказать мне, как правильно это сделать?

Большое спасибо.

Ответы [ 4 ]

1 голос
/ 06 апреля 2020

Просто используйте атрибут app:shapeAppearanceOverlay в макете.

<com.google.android.material.button.MaterialButton
        app:shapeAppearanceOverlay="@style/buttomShape"
        .../>

с:

  <style name="buttomShape">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSize">50%</item>
  </style>

enter image description here

Единственный способ применить его ко всем кнопкам - это определить пользовательские стили для всех стилей кнопок, как вы это делаете. Что-то вроде:

  <style name="...." parent="Widget.MaterialComponents.Button">
    <item name="shapeAppearance">@style/buttomShape</item>
  </style>

  <style name="..."  parent="Widget.MaterialComponents.Button.TextButton">
    <item name="shapeAppearance">@style/buttomShape</item>
  </style>
0 голосов
/ 06 апреля 2020

Вы знаете, что есть сайт для создания пользовательских макетов для кнопок, здесь есть Ссылка

enter image description here

это авто сгенерированный код вам не нужно кодировать. Может быть, это будет полезно всем

0 голосов
/ 06 апреля 2020

Создать файл для рисования xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    >
    <stroke
        android:color="@color/colorPrimary"
        android:width="1dp" />
    <corners
        android:radius="30dp"
        android:bottomLeftRadius="30dp"
        />
    <solid
        android:color="#4c95ec"

        />

</shape>
0 голосов
/ 06 апреля 2020

Вы можете установить фон для рисования на вашей кнопке. Рисунок может выглядеть следующим образом:

<shape android:shape="rectangle">
    <solid android:color="@android:color/blue" />
    <corners android:radius="10dp" />
</shape>

Это даст вам закругленные углы для фона кнопки.

...