带有Spannable的buttonsetText不适用于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东西。

Solutions Collecting From Web of "带有Spannable的buttonsetText不适用于Android 5.0 Lollipop"

默认情况下,“材质”button的样式为全部大写显示文本。 但是, AllCapsTransformationMethod存在一个用于大写的错误,导致它丢弃Spannable数据。

您可以覆盖默认的button样式,并通过在Button上指定android:textAllCaps="false"来禁用全部大写。

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