您好,登錄后才能下訂單哦!
沉寂這么多天,一直在搞安卓開發,剛有些眉目,今天分享一個textview 部分點擊事件的實現方法。這個功能主要用到的是SpannableString 這個安卓自帶類。詳細代碼如下:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
LinearLayout ll =null;
if(convertView==null){
ll=(LinearLayout) View.inflate(context,R.layout.comment_format_setting ,null);
}else{
ll = (LinearLayout) convertView;
}
TextView name = (TextView) ll.findViewById(R.id.username_text); //用戶名稱
TextView time = (TextView) ll.findViewById(R.id.time_text); //時間
TextView commcontent_text = (TextView) ll.findViewById(R.id.commcontent_text); //評論主體內容
TextView blogcontent_text = (TextView) ll.findViewById(R.id.blogcontent_text); //微博內容主體
name.setText(AllDateList.get(position).get("uname"));
time.setText(AllDateList.get(position).get("stime"));
commcontent_text.setText( getClickableSpan( position)); //設置SpannableString 為textview的內容
commcontent_text.setMovementMethod(LinkMovementMethod.getInstance()); //一定要加上,這個是為了激活點擊事件,不加則不會觸發點擊事件。
blogcontent_text.setText(AllDateList.get(position).get("pcon"));
return ll;
}
private SpannableString getClickableSpan(int position)
{
OnClickListener l = new OnClickListener(){
@Override
public void onClick(View v)
{
Toast.makeText(context, "Click Success", Toast.LENGTH_SHORT).show();
Log.v("atme", "點擊了");
}
};
SpannableString spanableInfo = new SpannableString(AllDateList.get(position).get("scon"));
int start = 0;
int end = 4;
spanableInfo.setSpan(new Clickable(l), start, end,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return spanableInfo;
}
class Clickable extends ClickableSpan implements OnClickListener{
private final OnClickListener mListener;
public Clickable(View.OnClickListener l){
mListener = l;
}
/** 設置顯示格式**/
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(context.getResources().getColor(R.color.atuser));
ds.setUnderlineText(false); //設置下劃線
}
@Override
public void onClick(View v){
mListener.onClick(v);
}
}
紅色部分標注是一些要注意的地方,尤其 是激活點擊事件,一定要加上,就是因為這個沒加浪費了我好長時間,如果要想在一個textview 中加多個點擊事件,剛添加多個
spanableInfo.setSpan(new Clickable(l), start, end,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。