Android EditText右键可绘制的点击事件

时间:2014-03-24 14:42:53

标签: android


我有一个EditText,我添加了左右n drawable。我无法处理右侧drwable的click evnt。如何处理android右侧可绘制图标的点击事件。

3 个答案:

答案 0 :(得分: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;
    }
});

答案 1 :(得分:0)

我认为你不能处理leftDrawable或rightDrawable的事件。您可以处理整个视图的事件。如果你想这样做,你有两个选择:

  • 扩展您自己的EditText版本或
  • 将您的drawable作为独立的ImageView

答案 2 :(得分:0)

如:Handling click events on a drawable within an EditText

items = dict(enumerate(df['euribor3m']))
unique = []

for k,i in items.items():
    if items[k+1] != items[k]:
        unique.append(items[k+1])