[英]Data Binding onTouch in a layout
我將項目更改為使用Android數據綁定。
除了寄托都工作正常onTouchListener
在我的自定義SectorImageView
它繼承AppCompatImageView
。 它必須是OnTouch
事件,而不是ClickListener
來處理單擊的x和y坐標。
當我實現Android數據綁定時,我的所有偵聽器都無法正常工作,因此我決定使用XML方法。
題
是否可以通過簡單地向類中添加OnTouchListener而不使用XML方法來處理onTouchListener
? 為什么當我實現Android數據綁定時,監聽器不再被識別?
這是我嘗試使用的一些代碼:
Java代碼
@BindingAdapter("app:onTouchListener")
public boolean onTouch(View view, MotionEvent event) {
// do something
}
XML布局
<x.y.z.SectorImageView
android:id="@+id/image_sector"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
app:onTouchListener="@{(view, event) -> onTouch(view, event)}"
app:srcCompat="@drawable/map" />
錯誤
****/ data binding error ****msg:Cannot find method onTouch on ViewDataBinding
嘗試這個:
在.java
文件中添加如下內容:
@BindingAdapter("touchListener")
public void setTouchListener(View self, boolean value){
self.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
// Check if PRESSED
if (event.getAction() == MotionEvent.ACTION_DOWN){
// code stuff
}
// Check if RELEASED
else if (event.getAction() == MotionEvent.ACTION_UP) {
// code stuff
}
return false;
}
});
}
在.xml
文件中添加如下內容:
<x.y.z.SectorImageView app:touchListener="@{true}"}"/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.