簡體   English   中英

布局中的數據綁定onTouch

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM