2013-02-04 36 views
5
final SpannableStringBuilder sb = new SpannableStringBuilder(); 
TextView tv = createContactTextView(contactName); 
BitmapDrawable bd = (BitmapDrawable) convertViewToDrawable(tv); 
bd.setBounds(0, 0, bd.getIntrinsicWidth(),bd.getIntrinsicHeight()); 

sb.append(contactName + ","); 
sb.setSpan(new ImageSpan(bd), sb.length()-(contactName.length()+1), sb.length()-   1,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
to_input.setText(sb); 

public static Object convertViewToDrawable(View view) { 
    int spec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); 
    view.measure(spec, spec); 
    view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); 
    Bitmap b = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), 
     Bitmap.Config.ARGB_8888); 
    Canvas c = new Canvas(b); 
    c.translate(-view.getScrollX(), -view.getScrollY()); 
    view.draw(c); 
    view.setDrawingCacheEnabled(true); 
    Bitmap cacheBmp = view.getDrawingCache(); 
    Bitmap viewBmp = cacheBmp.copy(Bitmap.Config.ARGB_8888, true); 
    view.destroyDrawingCache(); 
    return new BitmapDrawable(viewBmp); 

} 

public TextView createContactTextView(String text){ 
    //creating textview dynamically 
    TextView tv = new TextView(this); 
    tv.setText(text); 
    tv.setTextSize(20); 
    tv.setBackgroundResource(R.drawable.oval); 
    tv.setCompoundDrawablesWithIntrinsicBounds(0, 0,  R.drawable.ic_clear_search_api_holo_light, 0); 
tv.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
       Drawable co = ((TextView) v).getCompoundDrawables()[2]; 

       if (event.getX() > v.getMeasuredWidth() - v.getPaddingRight() 
         - co.getIntrinsicWidth()) { 
          //tv.setText(""); 
          Log.i(TAG, "clicked on delete button"); 
        return true; 
       } else { 
        return false; 
       } 
     } 

}); 
    return tv; 


} 

Nó sẽ tạo khoảng cách với văn bản bên trong editText Nhưng tôi muốn xóa khoảng Cách nhấp vào nút xóa trong khoảng đó. Tôi đã viết mã cho nó "tv.setOnTouchListener (mới OnTouchListener() {................" trong hàm createContactTextView nhưng không hoạt động. enter image description here}Xóa phần tử khi nhấp vào nút xóa của nó trong editText span

+0

tôi đang tìm kiếm cho cùng ... Xin vui lòng chia sẻ mã nếu bạn đã tìm thấy giải pháp ... – VijayRaj

+0

Tất nhiên là nó không phải. Chế độ xem văn bản không được sử dụng trực tiếp. TextView đã có một OnTouchListener, nhưng sau khi chỉ một bitmap của khung nhìn văn bản được hiển thị, không có EventListner nào nữa. – Servus7

Trả lời

0

Đặt ImageSpan và ClickableSpan với cùng địa điểm bắt đầu và kết thúc.

sb.setSpan(new ImageSpan(bd),startSpan ,endSpan , Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
sb.setSpan(new ClickableSpan() { 
        @Override 
        public void onClick(View widget) { 
         // DeleteHere 
        } 
       }, startSpan , endSpan , Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

Cũng loại bỏ touchlistener của bạn, nó sẽ không hoạt động! Bây giờ thiết lập LinkMovement để EditText của bạn.

editText.setMovementMethod(LinkMovementMethod.getInstance()); 
+0

Bạn có thể cung cấp mã "xóa tại đây" không? –

Các vấn đề liên quan