1

我有一個EditText,其中我將drawables設置爲EditText的右側。我正在用不同的場景切換那些drawables。我有clearTextrefreshIcon作爲我的drawables。這兩個都正確地改變,但我無法爲我的兩個drawables獲得單獨的事件。下面是我在做什麼從EditText清除文字:使用不同的drawable在setCompoundDrawables上獲取不同的事件

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它清除文本。這很好,很容易。

現在,我還有一個drawablerefreshIcon,在EditTextrefreshIcon是顯示了它不是爲刷新目的獲得特定的事件。

我使用了與clearText相同的代碼作爲refreshIcon。當refreshIconclicked/touched時,我無法打印Log

我在做什麼工作?任何形式的幫助將不勝感激。

回答

0

您可以將2個drawable組合到LevelListDrawable中。然後使用setLevel函數在它們之間切換。您始終可以通過getLevel方法找出哪些圖層(drawable)可見並執行適當的操作。

+0

你可以請解釋一下如何。我之前沒有聽說過layerDrawable。如果你能用真正有用的代碼解釋我。 – Anupam

+0

我有一個錯誤)你需要[LevelListDrawable](http://developer.android.com/guide/topics/resources/drawable-resource.html#LevelList)。 – Leonidos

+0

我覺得'LayerDrawable'不適合我。看到這個語句'管理一系列其他Drawable的Drawable。這些按照數組順序繪製,因此具有最大索引的元素將繪製在頂部。最大的索引號,將不得不爲此改變很多。我們不能爲兩個不同的drawables使用相同的方法。 – Anupam

相關問題