Я пытаюсь создать макет с кнопкой с рамкой, как показано ниже (ожидаемое поведение). Из документации по дизайну материалов я прочитал о кнопке 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" />
Ожидаемое поведение:
Текущее поведение:
попробуйте удалить прозрачный фон и стиль из вашего 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" />
не могли бы вы опубликовать свой XML-файл макета.
есть не что иное, как размещение в качестве контейнера
Ох ох! Я не знаю, что за волшебство заставляет ваш xml не работать. можно попробовать использовать RelativeLayout. просто попробуйте.
Это была тематическая тема! Изменив мою тему с Theme.AppCompat.Light.NoActionBar на Theme.MaterialComponents.Light.NoActionBar, она работает
ладно, хорошо! Я уже упоминал об обновленном коде. в любом случае! рад что сработало ;)
Просто добавьте этот атрибут в свой 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 !? Спасибо, что указали на это.
Зависимость
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 сработало для меня
Это сработало для меня
<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" />
К сожалению, не работает, не отображается граница и серый фон