TextView中的小方格
最近要写一个小程序,要在TextView里面显示中文,可是出现好多小方格,出现这种情况的原因是TextView并不支持这些字符。
这有可以分成两种情况,一是字库里不包含的字,通常是一些特别冷僻的字。这种对我们写程序来说是无能为力的,只能靠用户自己去更新系统的字库。第二种情况是有一些特殊的字符,比如'\r'(回车),TextView不能识别。所以解决办法就是把它过滤掉。
这里提供两种方法:
一种很容易想到,就是一个一个字符去比较,等于'\r'就delete掉。
view plaincopy to clipboardprint?
String str;
StringBuffer buf = new StringBuffer(str);
for(int i=0;i<buf.length();i++)
if(buf.charAt(i) == '\r')
buf = buf.deleteCharAt(i);
str = buf.toString();
String str;
StringBuffer buf = new StringBuffer(str);
for(int i=0;i<buf.length();i++)
if(buf.charAt(i) == '\r')
buf = buf.deleteCharAt(i);
str = buf.toString();
还有一种方法是用TextView 的setTransformationMethod(TransformationMethod method)把所有字库不支持的char都过滤掉。
TransformationMethod只是一个接口,如果要实现替换操作,最方便的做法是继承抽象类ReplacementTransformationMethod,ReplacementTransformationMethod实现了TransformationMethod的方法,并提供了两个抽象函数。getOriginal()返回的是需要被替换的char[],getReplacement()返回的是替换后的char[]。
这里我用空格替换回车,3替换2,注意它们是一一对应的。
view plaincopy to clipboardprint?
private class MyTransformationMethod extends ReplacementTransformationMethod{
@Override
protected char[] getOriginal() {
char[] original={'\r','2'};
return original;
}
@Override
protected char[] getReplacement() {
char[] replacement={' ','3'};
return replacement;
}
}
private class MyTransformationMethod extends ReplacementTransformationMethod{
@Override
protected char[] getOriginal() {
char[] original={'\r','2'};
return original;
}
@Override
protected char[] getReplacement() {
char[] replacement={' ','3'};
return replacement;
}
}
然后只要在开始的地方调用一次textView.setTransformationMethod(new MyTransformationMethod())就可以了。
显然,后面一种方法更好一些。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Seaside_Boy/archive/2010/01/20/5218536.aspx
分享到:
相关推荐
Android的TextView中显示图片和图像的方法
解决Android中原生TextView显示中英文特殊字符等末尾参差不齐问题
Android 一个TextView中设置不同字体大小和颜色
Android SpannableString实现TextView不同大小文字居中显示。
Android中TextView显示图片简单的Demo,利用TextView解析和显示HTML代码的功能实现。
两个功能 解决中英文结合导致提前换行bug。 textview动态变化行(显示更多),点击更多弹出全部textview再点击隐藏。
解决 TextView 中文、英文、数字、符号 排版问题,注释很清晰,5分绝对值了,
旋转TextView文字显示方向,可参考学习一下。
android 逐行逐字显示的textview 播放通知的字幕 逐字逐行显示。可以控制显示的次数。
自定义TextView解决超长文字显示的问题,更多信息见blog:http://blog.csdn.net/baidu_nod/article/details/32322853
自定义TextView显示Gif,先使用GifDecoder将Gif文件解析成一张张图片,然后通过ImageSpan将图片显示在TextView中,定义一个线程不断刷新图片
实现TextView 显示Gif 动态图片
实现textview字体颜色的渐变显示
TextView如何显示丰富的文本 TextView如何显示丰富的文本
视频与票的图标跟在标题后面显示,当标题过长时icon显示到省略号…后(textview省略号显示,图标自动靠后)。 二、问题解决 TextView可以通过 android:ellipsize=end android:singleLine=true实现单行省略, 但是...
android 设置textview中划线效果
Android TextView中显示图片的4种方式,具体见blog:http://blog.csdn.net/hwe_xc/article/details/50906220
这是参考别人的显示gif的textview而写出来的,可同时显示gif和png还有文字,类似于QQ聊天时输入动态表情, 不足的是,由于各gif的频率不一致,在输入多个不同gif时,有些gif可能看起来会慢一些 参考:...
有时候项目里面因为布局上的需要,而且布局的是一个例如TextView这样的文字描述繁多的非重要的组件,我们可以用一个Animation控制文字的动态的显示和隐藏.该demo是一个不错的选择.
旋转TextView文字显示方向,学习一下。