带 Spannable 的按钮 setText 不适用于 Android 5.0 Lollipop
Button setText with Spannable doesn't work for 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 上运行良好。好像是 Lollipop 里带 Button
的东西。
默认情况下,Material 按钮的样式设置为全部大写显示文本。但是,用于大写的 AllCapsTransformationMethod
中存在一个错误,导致它丢弃 Spannable
数据。
您可以通过在 Button
上指定 android:textAllCaps="false"
来覆盖默认按钮样式并禁用全部大写。
<Button
...
android:textAllCaps="false" />
我有一个简单的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 上运行良好。好像是 Lollipop 里带 Button
的东西。
默认情况下,Material 按钮的样式设置为全部大写显示文本。但是,用于大写的 AllCapsTransformationMethod
中存在一个错误,导致它丢弃 Spannable
数据。
您可以通过在 Button
上指定 android:textAllCaps="false"
来覆盖默认按钮样式并禁用全部大写。
<Button
...
android:textAllCaps="false" />