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



我正在尝试将触摸处理程序添加到FabricView,但似乎这样做我无法再素描了。事实上,FabricView本身定义了一个触摸处理程序,但似乎我的尝试 - 使用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,我们必须将JitPack包含在根gradle构建的allProjects部分。

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

这是 FabricView 源代码的页面。

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

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

像这样,您将触摸事件绝对绑定到此可观察对象。它返回true,因此不会调用onTouchEvent()。若要同时使用这两种行为,可能需要稍微重写ViewTouchObservable并改为返回false

最新更新