布局中的数据绑定 onTouch
Data Binding onTouch in a layout
我更改了项目以使用 Android 数据绑定。
除继承 AppCompatImageView
的自定义 SectorImageView
上的 onTouchListener
外,一切正常。它必须是 OnTouch
事件而不是 ClickListener
来处理点击的 x 和 y 坐标。
当我实施 Android 数据绑定 none 时,我的听众工作正常,所以我决定使用 XML 方法。
问题
有没有办法通过简单地向 class 添加一个 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}"}"/>
我更改了项目以使用 Android 数据绑定。
除继承 AppCompatImageView
的自定义 SectorImageView
上的 onTouchListener
外,一切正常。它必须是 OnTouch
事件而不是 ClickListener
来处理点击的 x 和 y 坐标。
当我实施 Android 数据绑定 none 时,我的听众工作正常,所以我决定使用 XML 方法。
问题
有没有办法通过简单地向 class 添加一个 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}"}"/>