2012-10-17 2 views
0

을에 긴 클릭 :이미지 뷰, 선택과에 클릭, 나는 몇 가지 <code>ImageView</code> 년대가

오른쪽 화살표 버튼의 선택 것은 : 같은

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="3" android:state_pressed="true"/> <!-- pressed --> 
    <item android:drawable="1" android:state_enabled="false"/> <!-- enabled --> 
    <item android:drawable="2"/> <!-- default --> 

</selector> 

(1, 2, 3보기 아래 사진의 내용 - 1은 왼쪽 화살표 버튼이지만 오른쪽 화살표는 반대 방향과 동일합니다.

이제 내 문제는 : 사용자가 클릭 않는 경우

  1. , 나는 그 상태를 변경할 수 setEnable()를 사용합니다. 그것은 작동합니다.
  2. 사용자가 길게 클릭하면 다시 setEnable()을 사용하여 상태를 변경합니다. 그러나 사용자가 손가락을 뗀 후에도 버튼의 상태는 #3으로 유지됩니다.
  3. 내가 시도 : cancelLongPress()clearFocus()는, invalidate()는, post(Runnable)는, postInvalidate()refreshDrawableState()이 ...하지만 그들은 작동하지 않았다.

앱은 최소 SDK 4 (Android 1.6)를 사용합니다. 당신이 나를 도울 수?

감사합니다,

답변

0

임시 해결책 :

... 
imageView.setOnTouchListener(new View.OnTouchListener() { 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_UP) { 
      v.postDelayed(new Runnable() { 

       @Override 
       public void run() { 
        v.setEnabled(...); 
       }// run() 
      }, 200); // 200 ms is enough 
     } 

     return false; 
    }// onTouch() 
});