mozilla / geckoview

GeckoView is a set of components for embedding Gecko in Android apps

Home Page:https://geckoview.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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")
})

image
scrollX
image

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")
                    })

logcat result
image