TextView:ellipsize设置了Marquee显示省略号
2014-05-30 17:56
1361 查看
不同厂商定制的Android系统,TextView:ellipsize设置了Marquee显示省略号(如全志平台),解决办法:
查看TextView源码发现有一段代码涉及到ViewConfiguration
isFadingMarqueeEnabled函数是被google hide掉的函数,由厂商编译framework时hardcode。
在activity oncreate时通过ViewConfiguration.get方法获取实例,再通过该实例反射设置ViewConfiguration的mFadingMarqueeEnabled
变量为true即可修复本文开头提到的bug。(代码如下)
ViewConfiguration configuration =ViewConfiguration.get(this);
Class claz =configuration.getClass();
try {
Field field=claz.getDeclaredField("mFadingMarqueeEnabled");
field.setAccessible(true);
field.set(configuration, true);
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
参考:http://www.myexception.cn/mobile/1493703.html
查看TextView源码发现有一段代码涉及到ViewConfiguration
if (ViewConfiguration.get(context).isFadingMarqueeEnabled()) { setHorizontalFadingEdgeEnabled(true); mMarqueeFadeMode = MARQUEE_FADE_NORMAL; } else { setHorizontalFadingEdgeEnabled(false); mMarqueeFadeMode = MARQUEE_FADE_SWITCH_SHOW_ELLIPSIS; } setEllipsize(TextUtils.TruncateAt.MARQUEE);
isFadingMarqueeEnabled函数是被google hide掉的函数,由厂商编译framework时hardcode。
在activity oncreate时通过ViewConfiguration.get方法获取实例,再通过该实例反射设置ViewConfiguration的mFadingMarqueeEnabled
变量为true即可修复本文开头提到的bug。(代码如下)
ViewConfiguration configuration =ViewConfiguration.get(this);
Class claz =configuration.getClass();
try {
Field field=claz.getDeclaredField("mFadingMarqueeEnabled");
field.setAccessible(true);
field.set(configuration, true);
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
参考:http://www.myexception.cn/mobile/1493703.html
相关文章推荐
- TextView限制最大行数,多出部分显示省略号,解决ellipsize = "end" 失效的问题
- android TextView 显示不全的问题解决,此问题是设置了maxLines和ellipsize=end情况下发生的!
- TextView设置android:ellipsize="marquee"属性,无法实现跑马灯效果的解决方法
- textview中有很多行,我只让它显示三行,最后显示...,我设置了android:maxLines="3"和android:ellipsize="end",但出现的问题是只显示两行就显示“...”
- TextView属性android:ellipsize实现跑马灯效果,TextView内容过长加省略号,点击显示全部内容
- TextView设置android:ellipsize=marquee不滚动
- android的TextView在设置ellipsize可能显示方框的问题
- 设置Textview最大长度,超出显示省略号
- [置顶] android开发之当设置textview多少字后以省略号显示。限制TextView的字数
- 使TextView组件的android:ellipsize="marquee"属性生效
- textview设置超出11个长度时显示省略号
- TextView 设置超过几行后显示省略号
- 对于TextView 设置 Ellipsize ="End" 无效时的解决方法
- android开发之当设置textview多少字后以省略号显示。限制TextView的字数
- TextView ellipsize=“marquee” 跑马灯效果不能实现,解决
- android让textview设置规定行数,多余部分省略号显示
- android开发之当设置textview多少字后以省略号显示。限制TextView的字数
- Android TextView 跑马灯效果 android:ellipsize="marquee"
- 设置Textview最大长度,超出显示省略号
- Android TextView设置显示指定字符,超过部分显示...(省略号)