
正如您所看到的,它适用于API17的button和TextVIEw,但仅在API21上使用TextVIEw(‘Z’不替换为图标).
private SpannableStringBuilder createSpanIcon(int rID,String name){ Drawable d = getActivity().getResources().getDrawable(rID); d.setBounds(0,20,20); ImageSpan imageSpan = new ImageSpan(d,DynamicDrawableSpan.AliGN_BASEliNE); SpannableStringBuilder builder = new SpannableStringBuilder(); builder.append("Z\n") .append(name) .setSpan(imageSpan,1,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); /* This give same result builder.append("Z",imageSpan,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) .append("RED",new ForegroundcolorSpan(color.RED),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) .append("\n" + name); */ return builder;} 和
button btn = (button)v.findVIEwByID(R.ID.mybutton); SpannableStringBuilder _test = createSpanIcon(R.drawable.tc_g,"Click Me!" ); btn.setText( _test ); TextVIEw txt = (TextVIEw)v.findVIEwByID(R.ID.myText); SpannableStringBuilder _test2 = createSpanIcon(R.drawable.tc_g,"I'm text" ); txt.setText( _test2 );
注意:我不想使用setCompoundDrawablesWithIntrinsicBounds,因为我要将图标放在Togglebutton上,所以setTextOn和setTextOff会为我交换图标.
任何人有一个想法为什么?和任何工作?
解决方法 您可以通过禁用allCaps模式解决此问题,默认情况下,对于材质样式的按钮,该模式为true.从代码,
txt.setAllCaps(false);
来自XML,
<button ... androID:textAllCaps="false" />总结
以上是内存溢出为你收集整理的android – SpannableString on按钮不适用于API21?全部内容,希望文章能够帮你解决android – SpannableString on按钮不适用于API21?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)