沉寂这么多天,一直在搞安卓开发,刚有些眉目,今天分享一个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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。