Получите различные события на setCompoundDrawables с различными сетями
У меня есть EditText
в котором я нахожусь drawables
справа от EditText
, Я переключаю те drawables
с разными сценариями. я имею clearText
а также refreshIcon
как мои drawables. Они оба меняются правильно, но я не могу получить отдельные события для обоих моих 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
,
Что я делаю? Любая помощь будет оценена.
1 ответ
Вы можете комбинировать 2 рисования в LevelListDrawable. Затем используйте функцию setLevel для переключения между ними. Вы всегда можете узнать, какой слой (рисуемый) видим с помощью метода getLevel, и выполнить соответствующее действие.