2017-08-15 111 views
0

Android數據綁定有Android的數據綁定view.onTouchListener

<Button android:onClick="@{handler.someButtonClick()}"/> 

,並在其Handler class它的聽衆會有一些怎麼樣的:

public View.OnClickListener someButtonClick() { 
     return new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

      } 
     }; 
    } 

我想要實現OnTouchListenerButton該我可以知道,當按鈕被按下,當它被釋放時

喜歡:

// Check if the button is PRESSED 
if (event.getAction() == MotionEvent.ACTION_DOWN){ 
    //do some thing   
}// Check if the button is RELEASED 
else if (event.getAction() == MotionEvent.ACTION_UP) { 
    //do some thing      
} 

是否有任何可能的方法來完成此任務。

+0

嘗試'機器人:的onClick = 「@ {(視圖,事件) - >(處理程序:: handleAction(事件))}」',未經測試。但是,正如文檔所述,您應該只通過數據綁定綁定簡單的偵聽器,因爲以後可能難以閱讀和維護。 https://developer.android.com/topic/libraries/data-binding/index.html#listener_bindings – Omkar

+0

你能否提供一個示例代碼 –

回答

1

以下是您可以使用的解決方法。

@BindingAdapter("touchListener") 
public void setTouchListener(View self,boolean value){ 
    self.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View view, MotionEvent event) { 
      // Check if the button is PRESSED 
      if (event.getAction() == MotionEvent.ACTION_DOWN){ 
       //do some thing 
      }// Check if the button is RELEASED 
      else if (event.getAction() == MotionEvent.ACTION_UP) { 
       //do some thing 
      } 
      return false; 
     } 
    }); 
} 

然後在XML

<Button app:touchListener="@{true}"}"/>