我有一个EditText,我添加了左右n drawable。我无法处理右侧drwable的click evnt。如何处理android右侧可绘制图标的点击事件。
答案 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的事件。您可以处理整个视图的事件。如果你想这样做,你有两个选择:
答案 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])