android – SpannableString on按钮不适用于API21?

android – SpannableString on按钮不适用于API21?,第1张

概述我尝试使用SpannableString在切换按钮上放置一个图标.并且在API17上工作,但在API21上没有. 正如您所看到的,它适用于API17的Button和TextView,但仅在API21上使用TextView(‘Z’不替换为图标). private SpannableStringBuilder createSpanIcon(int rid, String name){ Draw 我尝试使用SpannableString在切换按钮上放置一个图标.并且在API17上工作,但在API21上没有.

正如您所看到的,它适用于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?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1123214.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存