1

EditTextEditText 오른쪽에 drawables을 설정하고 있습니다. 다른 시나리오를 사용하여 해당 번호를 drawables으로 바꿉니다. 내 드로어 블로는 clearTextrefreshIcon입니다. 이 두 가지 모두 올바르게 변경되지만 내 drawables에 대해 별도의 이벤트를 가져올 수 없습니다. 여기에 내가 EditText에서 텍스트를 지우는 뭘하는지입니다 : 내가 clearTextdrawable을 클릭하면differnet 드로어 블을 사용하여 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; 
     } 
    }); 

가 텍스트를 지 웁니다. 그것은 좋고 쉬웠다.

는 지금, 나는 refreshIcon가 새로 고침 목적을 위해 특정 이벤트를 받고 있지 않습니다 보여주는 또 다른 drawablerefreshIcon, EditText에 있습니다.

refreshIcon에 대해 clearText과 동일한 코드를 사용했습니다. refreshIconclicked/touched 일 때 Log을 인쇄 할 수 없습니다.

나는 무엇을하고 있니? 모든 종류의 도움을 주시면 감사하겠습니다.

답변

0

LevelListDrawable에 2 개의 드로어 블을 결합 할 수 있습니다. 그런 다음 setLevel 함수를 사용하여 이들 사이를 전환합니다. getLevel 메소드를 통해 표시되는 레이어 (드로어 블)를 항상 찾아서 적절한 작업을 수행 할 수 있습니다.

+0

설명해 주실 수 있습니까? 전에 layerDrawable에 대해 들어 보지 못했습니다. 만약 당신이 정말 도움이 될 코드를 사용하여 설명 할 수 있습니다. – Anupam

+0

실수가 있습니다.) [LevelListDrawable] (http://developer.android.com/guide/topics/resources/drawable-resource.html#LevelList)이 필요합니다. – Leonidos

+0

'LayerDrawable'이 제게 적합하지 않다고 생각합니다. 이 문을 보자.'다른 Drawable의 배열을 관리하는 Drawable. 이것들은 배열 순서로 그려 지므로 가장 큰 인덱스를 가진 요소가 맨 위에 그려집니다. 가장 큰 인덱스 번호는이를 위해 많이 변경해야합니다. 우리는 두 개의 서로 다른'드로어 블 '에 대해서 같은 방법을 사용할 수 없습니까? – Anupam