spannablestring 不适用于以编程方式创建的按钮
Posted
技术标签:
【中文标题】spannablestring 不适用于以编程方式创建的按钮【英文标题】:spannablestring is not working for programmatically created button 【发布时间】:2015-07-02 19:18:02 【问题描述】:我知道 SpannableString 可以在一个文本视图中设置不同的文本大小,但如果以编程方式添加文本视图,它就不起作用了。
String s = "Best Ever";
SpannableString ss1 = new SpannableString(s);
ss1.setSpan(new RelativeSizeSpan(2f), 0, 4, 0); // set size
ss1.setSpan(new ForegroundColorSpan(Color.RED), 0, 4, 0); // set color
TextView tv = (TextView) findViewById(R.id.textview);
tv.setText(ss1);
【问题讨论】:
什么api版本? 5+? 他们在 v5 中对其进行了更改,***.com/questions/29007746/… 【参考方案1】:如您所见,它适用于 API17 的 Button 和 TextView,但仅适用于 API21 的 TextView
有趣!我注意到 API 21 上的按钮全部大写。所以删除所有大写。
默认情况下,Material 按钮的样式是全部大写的。但是,用于大写的 AllCapsTransformationMethod (bug details) 中存在一个错误,导致它丢弃 Spannable 数据。
您可以通过禁用 allCaps 模式来覆盖默认按钮样式,这对于 Material 样式的小部件默认为 true。
来自代码,
txt.setAllCaps(false);
来自 XML,
<View
...
android:textAllCaps="false" />
【讨论】:
谢谢!快要撞到我的头了! 请更新您的答案,因为没有android:allCaps
属性。我发现android:textAllCaps
是正确的。
@isnotmenow 感谢您的发起,我更新了我的答案:)
我已经尝试了一天的时间来解决这个问题。我知道这会是一件愚蠢的事情。就我而言,我试图将小数缩小 50%。谁能想到您可以在 Android 中将数字大写!
这是 textAllCaps 属性的一个已知错误,特别是 AllCapsTransformationMethod。 code.google.com/p/android/issues/detail?id=67509@もっくん以上是关于spannablestring 不适用于以编程方式创建的按钮的主要内容,如果未能解决你的问题,请参考以下文章