扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
沉寂这么多天,一直在搞安卓开发,刚有些眉目,今天分享一个textview 部分点击事件的实现方法。这个功能主要用到的是SpannableString 这个安卓自带类。详细代码如下:
我们注重客户提出的每个要求,我们充分考虑每一个细节,我们积极的做好网站建设、成都网站设计服务,我们努力开拓更好的视野,通过不懈的努力,创新互联建站赢得了业内的良好声誉,这一切,也不断的激励着我们更好的服务客户。 主要业务:网站建设,网站制作,网站设计,成都小程序开发,网站开发,技术开发实力,DIV+CSS,PHP及ASP,ASP.Net,SQL数据库的技术开发工程师。
@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);
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流