Horizo​​ntalScrollView 以编程方式无焦点滚动

问题描述

我开发了 Android TV 应用程序,并有一个自定义视图,看起来像带有 TextView 子项的 Horizo​​ntalScrollView。 当我按下某个按钮时,Horizo​​ntalScrollView 必须在左\右目的地滚动长子文本。 但是当我打电话

scrollView.fullScroll(horizontalscrollview.FOCUS_RIGHT)

horizo​​ntalScrollView 请求焦点在自己身上,所以按钮松散焦点因为同一时间只能聚焦一个视图。

如何在不请求焦点的情况下以编程方式滚动 Horizo​​ntalScrollView,以便按钮不会失去焦点?

解决方法

我用 ObjectAnimator 找到了一些解决方案。 只需为 scrollX 值设置动画。

fun scrollTo(scrollDestination: ScrollDestinations) {
        val targetXScroll = when(scrollDestination) {
            ScrollDestinations.START -> 0
            ScrollDestinations.END -> mTextView.width
        }

        val animator = ObjectAnimator.ofInt(mScroll,"scrollX",targetXScroll)
        animator.apply {
            duration = 100
            start()
        }
    }

在这个快照中,mScroll 是带有 mTextView 子项的 Horizo​​ntalScrollView。 ScrollDestinations 只是枚举。

但在我的情况下,当我滚动到“正确”的目的地时它有一些过度滚动,可能是 TextView 宽度有问题。就我而言,我可以忽略此过度滚动,但也许有人知道问题出在哪里。