我正在开展一个项目,我需要显示并附加两个字符串" name"和"消息"在自定义lisview的单一textview中有两种不同的颜色。为此,我使用了如下的Html文本:
String text = "<font color=#cc0029>Chandru</font> <font color=#ffcc00>You have got a notification</font>";
nameTedt.setText(Html.fromHtml(text)); <br>
上面的代码就像魅力一样,但我面临的问题是我的自定义列表视图中的性能问题(即滚动不顺畅)。我甚至尝试了如下的spannable文本:
TextView nameTedt= (TextView)findViewById(R.id.mytextview01);
Spannable wordtoSpan = new SpannableString("Andrew", You have got a message form simmons);
wordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 0, 6, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
nameTedt.setText(wordtoSpan); <br>
但问题的另一个问题始于我不知道字符串的确切大小&#34; name&#34;和&#34;消息&#34;。它可以是任何大小,因为我使用JSON解析它。我想使用两种不同颜色的spannable文本来表示字符串的任意数量的字符。任何其他解决方案也将不胜感激。
我的要求的总内容如下。
Chandru:今天早上你收到了来自艾莎的消息。如果可能请尽快给她回复。感谢
我希望可能有两个文本视图。但是我不知道如何处理它,因为我的消息文本应该包含在我名字下面的下一行&#34; chandru&#34;。请建议我继续进行布局。
我也发布了我的基础适配器类,因为html内容的性能很低
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v = convertView;
ViewHolder holder = null;
if (v == null) {
v = mLayoutInflater
.inflate(R.layout.view_subview, null);
holder = new ViewHolder();
holder.nameTedt= (TextView) v
.findViewById(R.id.nameTedt);
v.setTag(holder);
} else {
holder = (ViewHolder) v.getTag();
}
notifyTypeId = NotificationAllAL.get(position).getNotifyType().getNotifytypeId();
if(notifyTypeId == 1){
String text = "<font color=#cc0029>"namestring"</font> <font color=#ffcc00>You have got a notification</font>";
nameTedt.setText(Html.fromHtml(text));
}else if(notifyTypeId == 2){
String text = "<font color=#cc0029>"namestring"</font> <font color=#ffcc00>You have got a email</font>";
nameTedt.setText(Html.fromHtml(text));
}else if(notifyTypeId == 3){
String text = "<font color=#cc0029>"namestring"</font> <font color=#ffcc00>You have got a message</font>";
nameTedt.setText(Html.fromHtml(text));
}else if(notifyTypeId == 4){
String text = "<font color=#cc0029>You have got a call from</font> <font color=#ffcc00>"namestring"</font>";
nameTedt.setText(Html.fromHtml(text));
} <br>
名称字符串应为蓝色,消息字符串应为橙色。