沉寂这么多天,一直在搞安卓开发,刚有些眉目,今天分享一个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);

 

 

更多相关文章

  1. Android(安卓)WebView 用法说明
  2. 【边做项目边学Android】手机安全卫士05_2:程序主界面,为每个条目
  3. android的各种动作事件
  4. 【Android(安卓)View事件(二)】详解事件分发机制
  5. android paint api drawText 绘制字体字形
  6. Android中Paint字体属性的设置
  7. 安全卫士笔试 第一天
  8. 防止ListView变色
  9. edit text 及 text view 属性

随机推荐

  1. 在android用Google Geocoding API服务解
  2. Android(安卓)Launcher一些资源
  3. android RelativeLayout属性和布局实例
  4. Android应用程序的四个关键点
  5. android 窗口式activity
  6. Android简易注解View(java反射实现)
  7. Android中shape使用
  8. android makefile(android.mk)分析(转)
  9. Android平板开发注意点
  10. Android四款系统架构工具