Outlined MaterialButton не показывает границу

Я пытаюсь создать макет с кнопкой с рамкой, как показано ниже (ожидаемое поведение). Из документации по дизайну материалов я прочитал о кнопке Outlined Material Button, которая показалась мне идеальной для моей цели. Я определил кнопку в своем макете, указав ширину обводки и цвет обводки, но у нее нет границы, что я делаю неправильно?

<com.google.android.material.button.MaterialButton
            android:id = "@+id/material_text_button"
            style = "@style/Widget.MaterialComponents.Button.OutlinedButton"
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content"
            android:layout_marginStart = "8dp"
            android:layout_marginEnd = "8dp"
            android:text = "Change name"
            android:background = "@android:color/transparent"
            android:textSize = "12sp"
            app:layout_constraintBottom_toBottomOf = "@+id/listTextView2"
            app:layout_constraintEnd_toEndOf = "parent"
            app:layout_constraintStart_toEndOf = "@+id/listTextView2"
            app:layout_constraintTop_toTopOf = "@+id/listTextView2"
            app:strokeColor = "@color/green"
            app:strokeWidth = "10dp" />

Ожидаемое поведение:

Outlined MaterialButton не показывает границу

Текущее поведение:

Outlined MaterialButton не показывает границу

11
0
9 566
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

попробуйте удалить прозрачный фон и стиль из вашего xml. а также обязательно измените стиль на MaterialComponents.

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

 <com.google.android.material.button.MaterialButton
        android:id = "@+id/btn_login"
        android:layout_width = "match_parent"
        android:layout_height = "55dp"
        android:layout_marginStart = "20dp"
        android:layout_marginTop = "20dp"
        android:textSize = "16sp"
        android:layout_marginEnd = "20dp"
        android:text = "works"
        android:textAllCaps = "false"
        android:textColor = "@color/white"
        app:strokeColor = "@color/white"
        app:strokeWidth = "2dp" />

К сожалению, не работает, не отображается граница и серый фон

Nicola Gallazzi 27.03.2019 16:51

не могли бы вы опубликовать свой XML-файл макета.

Jiten Basnet 27.03.2019 16:55

есть не что иное, как размещение в качестве контейнера

Nicola Gallazzi 27.03.2019 17:01

Ох ох! Я не знаю, что за волшебство заставляет ваш xml не работать. можно попробовать использовать RelativeLayout. просто попробуйте.

Jiten Basnet 27.03.2019 17:04

Это была тематическая тема! Изменив мою тему с Theme.AppCompat.Light.NoActionBar на Theme.MaterialComponents.Light.NoActionBar, она работает

Nicola Gallazzi 27.03.2019 17:05

ладно, хорошо! Я уже упоминал об обновленном коде. в любом случае! рад что сработало ;)

Jiten Basnet 27.03.2019 17:06
Ответ принят как подходящий

Просто добавьте этот атрибут в свой MaterialButton

android:theme = "@style/Theme.MaterialComponents"

не добавляйте его в свою основную тему.

пример:

<com.google.android.material.button.MaterialButton
            android:id = "@+id/material_text_button"
            style = "@style/Widget.MaterialComponents.Button.OutlinedButton"
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content"
            android:theme = "@style/Theme.MaterialComponents"
            android:layout_marginStart = "8dp"
            android:layout_marginEnd = "8dp"
            android:text = "Change name"
            android:background = "@android:color/transparent"
            android:textSize = "12sp"
            app:layout_constraintBottom_toBottomOf = "@+id/listTextView2"
            app:layout_constraintEnd_toEndOf = "parent"
            app:layout_constraintStart_toEndOf = "@+id/listTextView2"
            app:layout_constraintTop_toTopOf = "@+id/listTextView2"
            app:strokeColor = "@color/green"
            app:strokeWidth = "10dp" />

Используйте это в своем приложении build.gradle

    implementation 'com.google.android.material:material:1.2.0-alpha02'

Я думаю, что это ошибка в материалах Google.

Обновлять: Потестил только что. Используйте зависимость в приложении Gradle ниже

implementation 'com.google.android.material:material:1.2.0-alpha05

и в XML-кнопке вашего материала добавьте стиль

style = "@style/Widget.MaterialComponents.Button.OutlinedButton"

он может не отображаться в предварительном просмотре xml, но будет отображаться при запуске приложения.

Странно, что в альфе 03, 04 и 05 ошибка сохраняется, а в 02 она решена? не должно быть решено для всех выпусков после 02 !? Спасибо, что указали на это.

Alaa AbuZarifa 02.04.2020 16:47

Зависимость

implementation 'com.google.android.material:material:1.2.1'

Добавление android:backgroundTint="@color/colorPrimary"

<com.google.android.material.button.MaterialButton
     android:id = "@+id/material_text_button"
     style = "@style/Widget.MaterialComponents.Button.OutlinedButton"
     android:layout_width = "wrap_content"
     android:layout_height = "wrap_content"
     android:text = "Pick Date"
     android:background = "@drawable/register_edittext_background"
     android:textSize = "12sp"

     app:backgroundTint = "@color/colorPrimary"
/>

просто добавление app:backgroundTint сработало для меня

lasec0203 02.06.2021 09:36

Это сработало для меня

 <style name = "oval_button_outline" 
     parent = "Widget.MaterialComponents.Button.OutlinedButton">
    <item name = "cornerFamily">rounded</item>
    <item name = "cornerRadius">16dp</item>
    <item name = "android:textColor">@color/dark_color</item>
</style>



 <com.google.android.material.button.MaterialButton
        android:id = "@+id/start_login"
        style = "@style/oval_button_outline"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:fontFamily = "sans-serif-medium"
        android:textStyle = "normal"
        android:textSize = "14sp"
        android:letterSpacing = "0.09"
        android:lineSpacingExtra = "2sp"
        android:gravity = "center_horizontal"
        android:text = "@string/login"
        android:textColor = "@color/dark_color"
        android:theme = "@style/Theme.MaterialComponents"
        app:strokeColor = "@color/dark_color"
        app:strokeWidth = "2dp" />

Другие вопросы по теме