Получите различные события на 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;
        }
    });

Когда я нажимаю clearTextdrawable это очищает текст. Это было красиво и легко.

Теперь у меня есть еще один drawable т.е. refreshIconкогда на EditTextrefreshIcon показывает, что это не получает определенное событие для цели обновления.

Я использовал тот же код, что и clearText за refreshIcon, Я не могу напечатать Log когда refreshIcon является clicked/touched,

Что я делаю? Любая помощь будет оценена.

1 ответ

Вы можете комбинировать 2 рисования в LevelListDrawable. Затем используйте функцию setLevel для переключения между ними. Вы всегда можете узнать, какой слой (рисуемый) видим с помощью метода getLevel, и выполнить соответствующее действие.

Другие вопросы по тегам