我有一个EditText
,其中drawables
位于EditText
的右侧。我正在用不同的场景切换那些drawables
。我有clearText
和refreshIcon
作为我的绘图。这两个都正在改变,但我无法为我的drawables
获取单独的事件。以下是我为清除EditText
:
String value = "";
final Drawable x = getResources().getDrawable(R.drawable.clear_text);
x.setBounds(0, 0, x.getIntrinsicWidth(), x.getIntrinsicHeight());
getUrl.setCompoundDrawables(null, null, value.equals("") ? null : x,
null);
getUrl.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (getUrl.getCompoundDrawables()[2] == null) {
return false;
}
if (event.getAction() != MotionEvent.ACTION_UP) {
return false;
}
if (event.getX() > getUrl.getWidth() - getUrl.getPaddingRight()
- x.getIntrinsicWidth()) {
getUrl.setText("");
getUrl.setCompoundDrawables(null, null, null, null);
}
return false;
}
});
点击clearText
drawable
后,它会清除文字。这很好,也很容易。
现在,我有另一个drawable
即refreshIcon
,当EditText
refreshIcon
出现时,它没有获得用于刷新目的的特定事件。
我对clearText
使用与refreshIcon
相同的代码。 Log
为refreshIcon
时,我无法打印clicked/touched
。
我在做什么?任何形式的帮助将不胜感激。
答案 0 :(得分:0)
您可以将2个drawable组合到LevelListDrawable中。然后使用setLevel函数在它们之间切换。您始终可以通过getLevel方法找出可见的图层(可绘制)并执行适当的操作。