2014-03-24 24 views
-1


我有一個EditText,我添加了左邊n右邊的drawable。我無法處理單擊evnt以正確執行drwable。如何處理Android右鍵圖標的點擊事件。Android EditText的Click事件Right Drawable

+1

發佈您的代碼......沒有代碼很難說什麼。 –

+1

可能重複的[在EditText中處理Drawable上的點擊事件](http://stackoverflow.com/questions/3554377/handling-click-events-on-a-drawable-within-an-edittext) –

回答

0

我不認爲你可以處理leftDrawable或rightDrawable的事件。您可以處理整個視圖的事件。如果你想這樣做,你有兩個選擇:

  • 擴展自己的EditText或版本
  • 把你繪製作爲一個獨立的ImageView
1

你需要添加的TouchEvent的onclick更換,你可以使用下面的代碼

mEditTextSearch.addTextChangedListener(new TextWatcher() { 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     if(s.length()>0){ 
      mEditTextSearch.setCompoundDrawablesWithIntrinsicBounds(null, null, getResources().getDrawable(android.R.drawable.ic_delete), null); 
     }else{ 
      mEditTextSearch.setCompoundDrawablesWithIntrinsicBounds(null, null, getResources().getDrawable(R.drawable.abc_ic_search), null); 
     } 
    } 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
    } 
    @Override 
    public void afterTextChanged(Editable s) { 
    } 
}); 
mEditTextSearch.setOnTouchListener(new OnTouchListener() { 
    @SuppressLint("ClickableViewAccessibility") 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if(event.getAction() == MotionEvent.ACTION_UP) { 
      if(mEditTextSearch.getCompoundDrawables()[2]!=null){ 
       if(event.getX() >= (mEditTextSearch.getRight()- mEditTextSearch.getLeft() - mEditTextSearch.getCompoundDrawables()[2].getBounds().width())) { 
        mEditTextSearch.setText(""); 
       } 
      } 
     } 
     return false; 
    } 
}); 
+0

好的答案( y) - 毫無價值...... –