Android создать пользовательскую кнопку с одним закругленным углом - PullRequest

Ответы [ 4 ]

1 голос
/ 14 июля 2020

Вы можете использовать атрибут shapeAppearanceOverlay:

    <com.google.android.material.button.MaterialButton
        android:insetTop="0dp"
        android:insetBottom="0dp"
        app:shapeAppearanceOverlay="@style/one_rounded"
        app:icon="@drawable/ic_add_24px"
        app:iconPadding="4dp"
      />

с:

<style name="one_rounded">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSize">0dp</item>
    <item name="cornerSizeTopLeft">50%</item>
</style>

введите описание изображения здесь

0 голосов
/ 14 июля 2020

Атрибут android:background не будет работать с MaterialButton , поскольку он использует его внутри. Я думаю, что они сделали возможным изменить его в последней альфа-версии библиотеки, но еще не в стабильных версиях. Итак, вот как вы собираетесь это сделать.

Во-первых, убедитесь, что тема вашего приложения наследуется от темы материала, чтобы мы могли использовать все атрибуты материала (вы можете использовать любую из тем материалов ).

<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
...
</style>

Теперь определите стиль для ShapeAppearance кнопки MaterialButton .

<style name="shapeAppearance">
    <item name="cornerSizeTopLeft">20dp</item>
</style>

Наконец, используйте его в своем XML код, в котором вы определяете кнопку.

<com.google.android.material.button.MaterialButton
            android:id="@+id/loginButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            style="@style/Widget.MaterialComponents.Button"
            app:shapeAppearance="@style/shapeAppearance"
            android:text="@string/main_fragment_login_label"/>

Теперь ваша кнопка должна выглядеть так, как показано ниже, а это именно то, что вы ищете.

введите описание изображения здесь

0 голосов
/ 14 июля 2020

Не знаю, что именно вы пробовали, но попробуйте вот так:

android: topLeftRadius = "10dp"

0 голосов
/ 14 июля 2020

Использование кнопки материала:

Определите стиль в вашем styles.xml

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

<style name="MyShapeAppearance">
    <item name="cornerFamily">rounded</item>
    <item name="cornerFamilyTopRight">cut</item>
    <item name="cornerFamilyBottomRight">cut</item>
    <item name="cornerFamilyBottomLeft">cut</item>
    <item name="cornerSizeTopLeft">10dp</item>
</style>

И затем используйте этот стиль в вашем MaterialButton. Для получения дополнительной информации см. docs или пример использования .

Обычная кнопка:

Вы можете использовать ShapeDrawable в качестве фона для кнопки, например:

bg_button.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <solid android:color="#ff000000"/>

    <corners android:topLeftRadius="10dp"/>
</shape>

Затем в вашем макете:

<Button
    android:id="@+id/cornerButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/bg_button"
    ... />
...