웨 이 보 콘 텐 츠 의 패키지 에 대한 상세 한 설명
 
TextView content = (TextView) convertView.findViewById(R.id.content); 
content.setText(Html.fromHtml("<html><head>"+temp.get(position).getContent()+"</html></head>")); 
CharSequence str = content.getText(); 
SpannableString spann = WeiboUtils.formatContentNoClick(str); 
content.setText(spann); 
 
package com.lizheng.little.yiqu.utils; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
import com.lizheng.little.yiqu.ui.ActWeiBoInfo; 
import android.content.Context; 
import android.content.Intent; 
import android.net.Uri; 
import android.text.SpannableString; 
import android.text.Spanned; 
import android.text.style.ClickableSpan; 
import android.text.style.ForegroundColorSpan; 
import android.view.View; 
public class WeiboUtils { 
/** 
*  text @  、#   、http://       ,             
* @param text 
* @param context 
* @return*/ 
public static SpannableString formatContent(CharSequence text,Context context) { 
SpannableString spannableString = new SpannableString(text); 
/* 
* @[^\\s::]+[::\\s]   @   
* #([^\\#|.]+)#   #    http://t\\.cn/\\w+      
*/ 
Pattern pattern = Pattern.compile("@[^\\s::]+[::\\s]|#([^\\#|.]+)#|http://t\\.cn/\\w"); 
Matcher matcher = pattern.matcher(spannableString); 
final Context mcontext = context; 
while (matcher.find()) { 
final String match=matcher.group(); 
if(match.startsWith("@")){ //@  ,     
spannableString.setSpan(new ClickableSpan() 
{ 
//  onClick                   
@Override 
public void onClick(View widget) 
{ 
String username = match; 
username = username.replace("@", ""); 
username = username.replace(":", ""); 
username = username.trim(); 
Intent intent = new Intent(mcontext,XXX.class); 
ConstantsUtil.clickName = username; 
mcontext.startActivity(intent);//          
} 
}, matcher.start(), matcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
spannableString.setSpan(new ForegroundColorSpan(0xff0077ff), 
matcher.start(), matcher.end(), 
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
} 
else if(match.startsWith("#")){ //#    
spannableString.setSpan(new ClickableSpan() 
{ 
//  onClick                   
@Override 
public void onClick(View widget) 
{ 
String theme = match; 
theme = theme.replace("#", ""); 
theme = theme.trim(); 
ConstantsUtil.clickName = theme; 
Intent intent = new Intent(mcontext,XXX.class); 
mcontext.startActivity(intent);//          
} 
}, matcher.start(), matcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
spannableString.setSpan(new ForegroundColorSpan(0xff0077ff), 
matcher.start(), matcher.end(), 
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
} 
else if(match.startsWith("http://")){ //     
spannableString.setSpan(new ClickableSpan() 
{ 
//  onClick                   
@Override 
public void onClick(View widget) 
{ 
Uri uri = Uri.parse(match); 
Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
mcontext.startActivity(intent); 
} 
}, matcher.start(), matcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
spannableString.setSpan(new ForegroundColorSpan(0xff0077ff), 
matcher.start(), matcher.end(), 
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
} 
} 
return spannableString; 
} 
public static SpannableString formatContentNoClick(CharSequence text) { 
SpannableString spannableString = new SpannableString(text); 
/* 
* @[^\\s::]+[::\\s]   @   
* #([^\\#|.]+)#   #    http://t\\.cn/\\w+      
*/ 
Pattern pattern = Pattern.compile("@[^\\s::]+[::\\s]|#([^\\#|.]+)#|http://t\\.cn/\\w"); 
Matcher matcher = pattern.matcher(spannableString); 
while (matcher.find()) { 
final String match=matcher.group(); 
if(match.startsWith("@")){ //@  ,     
spannableString.setSpan(new ForegroundColorSpan(0xff0077ff), 
matcher.start(), matcher.end(), 
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
} 
else if(match.startsWith("#")){ //#    
spannableString.setSpan(new ForegroundColorSpan(0xff0077ff), 
matcher.start(), matcher.end(), 
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
} 
else if(match.startsWith("http://")){ //     
spannableString.setSpan(new ForegroundColorSpan(0xff0077ff), 
matcher.start(), matcher.end(), 
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
} 
} 
return spannableString; 
} 
public static long calculateWeiboLength(CharSequence c) { 
double len = 0; 
for (int i = 0; i < c.length(); i++) { 
int temp = (int)c.charAt(i); 
if (temp > 0 && temp < 127) { 
len += 0.5; 
}else{ 
len ++; 
} 
} 
return Math.round(len); 
} 
} 
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Flotiq 헤드리스 CMS의 다국어 콘텐츠. 예제 모델, API 호출 및 데모이 문서에서는 Flotiq에서 다국어 콘텐츠를 관리하는 방법을 보여줍니다. 예시로 블로그 게시물을 사용하지만 Flotiq을 사용하여 다양한 데이터를 관리할 수 있음을 기억하십시오. 예제 블로그 포스트 CTD가 어떻게...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.