带有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东西。

  • Android SpannableString在文本的后面设置背景
  • 如何在不同的单词上单击或点击TextView文本?
  • 结合Spannable和String.format()
  • 我的spannable怎么没有显示?
  • 在EditText中,是否有一种方法来禁用span上的自动更正?
  • Android:如何将Spannable.setSpan和String.format结合起来?
  • 带有不同textSize的TextView
  • 将ImageSpan中心垂直文字alignment
  • 默认情况下,“材质”button的样式为全部大写显示文本。 但是, AllCapsTransformationMethod存在一个用于大写的错误,导致它丢弃Spannable数据。

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

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