Кнопка 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.

По умолчанию кнопки «Материал» стилизованы для отображения текста во всех шапках. Однако в AllCapsTransformationMethod используется AllCapsTransformationMethod используемая для капитализации, которая приводит к тому, что она отбрасывает Spannable data.

Вы можете переопределить стиль кнопки по умолчанию и отключить все шапки, указав android:textAllCaps="false" на вашей Button .

 <Button ... android:textAllCaps="false" />