Почему я не могу сделать кнопку закругленной?

Я создал файл xml с именем rounded_button.xml для пользовательского дизайна кнопки со скругленными углами, который я планирую использовать на экране входа в систему.

Это код, который у меня есть в моем xml файле

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@color/colorPrimaryDark"/>
    <corners
        android:topRightRadius="100px"
        android:topLeftRadius="100px"
        android:bottomRightRadius="100px"
        android:bottomLeftRadius="100px"
        />
</shape>

Я попытался реализовать это на экране входа в систему, как это

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFFFFF"
    tools:context=".LoginActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Round"
        android:background="@drawable/round_button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>

Однако кнопка по-прежнему прямоугольная, и даже если я увеличу размеры углов, она не скруглит края

  1. Что я сделал не так?
  2. Есть ли лучший способ структурировать мой XML-файл, чтобы закруглить кнопку?

person Vennela G    schedule 29.09.2020    source источник
comment
Код выглядит нормально, что, если вы попробуете <corners android:radius="100px" /> вместо установки радиуса каждого угла? Я бы также предложил использовать dp вместо px   -  person Paula Chittaro    schedule 29.09.2020
comment
Благодарю вас! Я применил эти изменения, и кажется, что на вкладке Дизайн в файле round_buttons.xml изменения отображаются, но на самом экране входа в систему есть без изменений. Я могу это как-то исправить?   -  person Vennela G    schedule 29.09.2020
comment
Если вы хотите использовать закругленную кнопку, вы можете посмотреть что-то вроде этого stackoverflow.com/a/61055155/5710697. Надеюсь, поможет   -  person Sandy    schedule 29.09.2020
comment
Спасибо Сэнди :)   -  person Vennela G    schedule 29.09.2020
comment
Вы используете тему MaterialComponents для своего приложения? Если это так, ваш тег <Button> будет увеличен как MaterialButton, который не поддерживает android:background. Дополнительные сведения см. в документации: developer.android.com/reference /com/google/android/material/   -  person Ben P.    schedule 29.09.2020
comment
Это имеет большой смысл, Бен, я смог это исправить. Спасибо за ссылку и помощь   -  person Vennela G    schedule 29.09.2020
comment
@БенП. Начиная с 1.2.0 MaterialButton поддерживает атрибут android:background.   -  person Gabriele Mariotti    schedule 30.09.2020
comment
@VennelaG В вашем случае вам не нужно использовать собственный фон. Просто используйте MaterialButton с атрибутами app:cornerRadius и app:backgroundTint.   -  person Gabriele Mariotti    schedule 30.09.2020