Geckoview scrollY and scrollX always 0.0 (zero)
dimaslanjaka opened this issue · comments
How to get scroll X and Y after swiped ? why always return zero ?
class properties
private var browser: GeckoView? = null
var height = 0 // this automated by other methods and accurated to get content height
scroll down programmatically
var scrollY = browser!!.scrollY.toFloat()
Timber.tag("scroll: start").d("$scrollY - $height")
// swipe down
MotionHelperkt.down(200f, {
// get scroll Y after swiped
scrollY = browser!!.scrollY.toFloat()
Timber.tag("scroll: ends").d("$scrollY - $height")
})
geckoview iam used
final def geckoviewChannel = "nightly"
final def geckoviewVersion = "121.0.20231104215054"
// implementation "org.mozilla.geckoview:geckoview-${geckoviewChannel}:${geckoviewVersion}"
x86Implementation "org.mozilla.geckoview:geckoview-${geckoviewChannel}-x86:${geckoviewVersion}"
x86_64Implementation "org.mozilla.geckoview:geckoview-${geckoviewChannel}-x86_64:${geckoviewVersion}"
armImplementation "org.mozilla.geckoview:geckoview-${geckoviewChannel}-armeabi-v7a:${geckoviewVersion}"
aarch64Implementation "org.mozilla.geckoview:geckoview-${geckoviewChannel}-arm64-v8a:${geckoviewVersion}"
fixed by adding scroll listener.
on activity
// scroll listener - session is GeckoSession
session.scrollDelegate = object : ScrollDelegate {
override fun onScrollChanged(session: GeckoSession, scrollX: Int, scrollY: Int) {
GeckoScrollHelper.scrollY = scrollY
GeckoScrollHelper.scrollX = scrollX
super.onScrollChanged(session, scrollX, scrollY)
}
}
on GeckoScrollHelper.kt
companion object {
var height = 0
var scrollX = 0
var scrollY = 0
}
on method down
Timber.tag("scroll: start").d("$scrollY - $scrollX - $height")
// swipe down
MotionHelperkt.down(200f, {
// get scroll coord after swiped
Timber.tag("scroll: ends").d("$scrollY - $scrollX - $height")
})