Это связано с ошибкой textAllCaps
в версиях до Oreo. Этот стиль по умолчанию Button
будет иметь этот атрибут, установленный на true
, что просто приводит к преобразованию текста Button
в верхний регистр. Это преобразование выполняется с помощью класса платформы AllCapsTransformationMethod
, который в Nougat 7.1 и ниже будет рассматривать все как плоские String
s, по существу удаляя все установленные вами интервалы форматирования.
Исправление заключается в отключите этот атрибут и обработайте любое преобразование в верхний регистр, которое может вам понадобиться, в коде. Snackbar
предлагает атрибут snackbarButtonStyle
как средство стилизации действия Button
, и мы можем создать простой стиль для изменения этого значения. Например, из вашего styles.xml
:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="snackbarButtonStyle">@style/NoCapsButton</item>>
</style>
<style name="NoCapsButton" parent="Widget.AppCompat.Button">
<item name="textAllCaps">false</item>
</style>
(если вы используете тему компонентов материала, вместо parent
для NoCapsButton
должно быть Widget.MaterialComponents.Button.TextButton.Snackbar
.)
В данном случае c это все, что вам нужно сделать, поскольку нет текста для преобразования.