2016-09-26 98 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

相关问题