当前位置:编程学习 > wap >>

Android 全局设置项目中TextView控件值

在项目里面最开始使用了系统提供的TextView,但是后来更改业务需求,需要setText()把一个xml里面定义的某些字符转换为图片显示。然后我自己实现了一个类来进行转换把String转换为SpannableStringBuilder。
最后在调用的时候,我发现这是个坑也就是说,我需要整个应用,所有涉及为TextView都要实现这个功能。
解决方案我目前想到的有两种方案。
1.继承TexView,覆盖setText()函数,这样我需要把所有XML布局文件以及JAVA源文件里面的TextView都改成我继承的那个控件,项目太大,文件太多,这是一个坑,另外TextView的setText函数是final的,也就是说调用的时候必须使用另外一个函数而不是setText进行设置。
2.使用系统原有的控件,在调用前先转换String为SpannableStringBuilder,比如mTextView.setText(TextUtils.convertToSpannableStringBuilder(contentString));这样也比较麻烦,每次设置控件的值前都要调用这个,很多时候容易忘记。工作量相对前面的小点,但是也很麻烦,关键是项目太大,文件太多。
3.更想到
现在我希望能有一个简单的解决方案,哪位大神有好的办法,尽量改动少些来实现这个功能。 android textview 控件 --------------------编程问答-------------------- 前面的3没写完,如下
把控件和内容传入一个函数进行设置,工作量同2
public void setFace(View view,String content){
if(View instanceof TextView){
(TexView)(view).setText(TextUtils.convertToSpannableStringBuilder(contentString));
}else if(View instanceof EditText){
(EditText)(view).setText(TextUtils.convertToSpannableStringBuilder(contentString));
}else{
}
}


求建议啊 --------------------编程问答-------------------- 2或者3吧,就算是坑,你也得跳了 --------------------编程问答-------------------- 我是来学习的!!加油 --------------------编程问答-------------------- 3 --------------------编程问答-------------------- 方案1也可以的:
1. 自定义TextView,比如叫EmojiTextView
2. 重写setText (CharSequence text, TextView.BufferType type)
   虽然setText (CharSequence text)等是final的,但是它其实调用的是上面这个非final方法
3. 只需要在res里面找就可以了,代码里面可以仍然使用TextView,除非代码里面有“new TextView”这样的东西,搜索"<TextView"替换成"<com.yourpackage.EmojiTextView"就行了
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,