RxAndroid – 使用RxView.touches清除其他处理程序

我正在尝试将触摸处理程序添加到FabricView ,但似乎这样做我无法再绘制。 事实上,FabricView本身定义了一个Touch处理程序,但似乎我使用RxAndroid2来清除预定义的处理程序,而不是链接到它。

我想要的是能够使用我的处理程序,而不必清除现有的。

这是我主要活动的一部分(sketchview是FabricView的一个实例)

sketchView.backgroundMode = FabricView.BACKGROUND_STYLE_NOTEBOOK_PAPER RxView.touches(sketchView, {_ -> true}).subscribe { // setting to false let me sketch, but I don't get any toast event -> when(event.action){ MotionEvent.ACTION_DOWN -> { toast("Starting") } MotionEvent.ACTION_UP -> { toast("Stopping") } else -> {} } } 

这是我的app.gradle提取:

 compile 'com.github.antwankakki:FabricView:latest' compile 'com.rmtheis:tess-two:7.0.0' compile "io.reactivex.rxjava2:rxjava:2.1.0" compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'com.jakewharton.rxbinding2:rxbinding:2.0.0' compile "org.jetbrains.anko:anko-commons:$anko_version" 

而为了使用FabricView,我们必须在根gradle build的allProjects部分中包含JitPack。

 allprojects { repositories { jcenter() maven { url 'https://maven.google.com' } mavenCentral() maven { url "https://jitpack.io" } } } 

这是FabricView源代码的页面 。

RxView.touches()返回一个ViewTouchObservableview.setOnTouchListener(listener)在订阅时调用view.setOnTouchListener(listener)来观察触摸事件。

警告:创建的observable使用View.setOnTouchListener()来观察触摸。 一次只能观察一个观察点。

像这样,你可以将触摸事件完全绑定到这个可观察对象上。 它返回true ,因此onTouchEvent()将不会被调用。 要使用这两种行为,您可能需要稍微重写ViewTouchObservable然后返回false