我知道SpannableString可以在一个textview中设置不同的文本大小,但如果以编程方式添加textview,它就无法正常工作。
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);
答案 0 :(得分:27)
正如您所看到的,它适用于API17的Button和TextView,但仅适用于API21上的TextView
有趣!我注意到API 21上的按钮都是大写的。所以要删除所有大写字母。
默认情况下,“材质”按钮的样式设置为以全部大写字母显示文本。但是,AllCapsTransformationMethod中存在一个用于大写的错误,导致它丢弃Spannable数据。
您可以通过禁用allCaps模式覆盖默认按钮样式,默认情况下,对于Material样式的小部件,这是真实的。
来自代码,
txt.setAllCaps(false);
来自XML,
<View
...
android:textAllCaps="false" />