Кнопка setText с Spannable не работает для Android 5.0 Lollipop
У меня есть простой Button
:
<Button
android:id="@+id/test"
android:textColor="@color/white"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
и попытайтесь изменить свойство текста:
SpannableString span = new SpannableString(text);
span.setSpan(new AbsoluteSizeSpan(8, true), 5, 10, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
testButton.setText(span);
Он работает на Android 4.3, но не на 5.0.
Интересно, когда я меняю реализацию с Button
на TextView
, она отлично работает на 5.0. Кажется, что-то с Button
в Lollipop.
Ответы
Ответ 1
По умолчанию кнопки "Материал" стилизованы для отображения текста во всех шапках. Однако в AllCapsTransformationMethod
есть ошибка, используемая для капитализации, которая заставляет ее отказаться от данных Spannable
.
Вы можете переопределить стиль кнопки по умолчанию и отключить все шапки, указав android:textAllCaps="false"
на Button
.
<Button
...
android:textAllCaps="false" />