溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

android textview 如何實現(xiàn)像新浪微博@用戶的點擊事件

發(fā)布時間:2020-07-23 04:12:28 來源:網絡 閱讀:1627 作者:manlianman 欄目:移動開發(fā)

  沉寂這么多天,一直在搞安卓開發(fā),剛有些眉目,今天分享一個textview 部分點擊事件的實現(xiàn)方法。這個功能主要用到的是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());  //一定要加上,這個是為了激活點擊事件,不加則不會觸發(fā)點擊事件。
  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);

 

 

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI