2013-02-04 5 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; 


} 

यह संपादन टेक्स्ट के अंदर पाठ के साथ स्पैन बनाएगा लेकिन मैं उस अवधि में हटाए गए बटन के क्लिक पर स्पैन को हटाना चाहता हूं। मैं के लिए यह "tv.setOnTouchListener (नई OnTouchListener() {................" कोड लिखा createContactTextView समारोह में, लेकिन इसके काम नहीं कर रहा। enter image description here}संपादन में इसके हटाए गए बटन के क्लिक पर तत्व हटाएं टेक्स्ट

+0

मैं एक ही रहा हूँ ... कृपया हिस्सा अगर आपको समाधान मिल गया है तो कोड ... – VijayRaj

+0

बेशक यह करता है नहीं। टेक्स्ट व्यू का उपयोग सीधे नहीं किया जाता है। टेक्स्ट व्यू को ऑन टच लिस्टनर मिला है, लेकिन टेक्स्ट व्यू का केवल एक बिटमैप प्रदर्शित होने के बाद, कोई और ईवेंटलिस्ट नहीं है। – Servus7

उत्तर

0

सेट ImageSpan और जिसका प्रारंभ और समाप्ति स्थानों के लिए ClickableSpan।

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); 

इसके अलावा अपने touchlistener निकालते हैं तो वह अपने edittext लिए काम नहीं करेगा! अब सेट LinkMovement।

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

क्या आप "यहां हटाएं" कोड प्रदान कर सकते हैं? –

संबंधित मुद्दे