使用不同的drawable在setCompoundDrawables上获取不同的事件

时间:2013-07-22 07:01:55

标签: android android-edittext android-drawable android-event compound-drawables

我有一个EditText,其中drawables位于EditText的右侧。我正在用不同的场景切换那些drawables。我有clearTextrefreshIcon作为我的绘图。这两个都正在改变,但我无法为我的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后,它会清除文字。这很好,也很容易。

现在,我有另一个drawablerefreshIcon,当EditText refreshIcon出现时,它没有获得用于刷新目的的特定事件。

我对clearText使用与refreshIcon相同的代码。 LogrefreshIcon时,我无法打印clicked/touched

我在做什么?任何形式的帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以将2个drawable组合到LevelListDrawable中。然后使用setLevel函数在它们之间切换。您始终可以通过getLevel方法找出可见的图层(可绘制)并执行适当的操作。