2016-09-26 67 views
0

我試圖在按下View時使其作爲ColorStateList或Selector。當視圖傳入方法onClickColorSelector 時,它將採用視圖並設置一個setOnTouchListener,因此當用戶按下view時,該視圖將獲得選擇器效果。onTouchListener僅在第二次按下時才起作用

現在問題onTouchListener僅在第二次單擊查看時調用。爲什麼它的行爲如何以及如何解決?

注意!不建議我ColorStateList!

onClickColorSelector是在一個叫做視圖選擇

public void onClickColorSelector(View view, final int onPressColor) { 

    Log.d("TAG" , "1"); 
    view.setOnTouchListener(new View.OnTouchListener() { 
     int defaultTextColor = 0; 

     @Override 
     public boolean onTouch(View view, MotionEvent motionEvent) { 
      if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { 
       Log.d("TAG" , "2"); 
       if (view instanceof TextView) { 
        Log.d("TAG" , "3"); 
        defaultTextColor = ((TextView) view).getCurrentTextColor(); 
        ((TextView) view).setTextColor(onPressColor); 
       } 
       Log.d("TAG" , "4"); 
        view.getBackground().setColorFilter(Color.RED, PorterDuff.Mode.SRC_ATOP); 
       return true; 

      } else if (motionEvent.getAction() == MotionEvent.ACTION_UP) { 

       if (view instanceof TextView) { 

        ((TextView) view).setTextColor(defaultTextColor); 
       } 

        view.getBackground().setColorFilter(null); 


       return true; 
      } 

      return false; 
     } 
    }); 
} 

類這是怎麼onClickColorSelector();從另一個類叫做:

ViewSelector vs = new ViewSelector(this); 

     loginBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      vs.onClickColorSelector(loginBtn, Color.RED); 


     } 
    }); 
+1

調用這個'vs.onClickColorSelector(loginBtn,Color.RED);'在'的OnCreate()'方法...... – sushildlh

+0

@sushildlh它就是答案!當錯過這麼小的事情時哈哈很有趣!請將其作爲答案 – Muddz

回答

1

它啓動時按下按鈕。 ..

這就是原因,它運行第二次....

所以稱之爲vs.onClickColorSelector(loginBtn, Color.RED);OnCreate()方法

+0

任何有關此代碼爲什麼使view.OnClick不再工作的建議? – Muddz

+0

我認爲你已經有了按鈕上的OnTouch監聽器....看看這個http://stackoverflow.com/a/19539206/5305430 – sushildlh

+1

我解決了這個問題,通過設置view.callOnClick();裏面如果這個調用'(motionEvent.getAction()== MotionEvent.ACTION_UP){}' – Muddz

相關問題