【问题标题】:Android TV: Focus moved to View in ScrollView that is outside visible part of ScrollViewAndroid TV:焦点移至 ScrollView 中的视图,该视图位于 ScrollView 的可见部分之外
【发布时间】:2019-02-27 11:37:37
【问题描述】:

我在 ScrollView 的 ViewGroup 中有一个垂直的可聚焦视图行。 上面是一些可聚焦的按钮。 当 ScrollView 的视图向上滚动到顶部之外,并且我在按钮之间水平移动焦点时,滚动视图中的视图在滚动视图的可见部分上方获得焦点,因为它们与我猜的按钮位于相同的水平区域.

这似乎是非常不正确的行为。 有其他人看到这种行为或知道避免这种行为的方法吗?

【问题讨论】:

    标签: android android-tv


    【解决方案1】:

    由于您没有添加代码,我只能建议为您的按钮添加以下属性:

    <Button
        android:id="@+id/button1"
        android:nextFocusRight="@+id/button2"
        ... />
    <Button
        android:id="@id/button2"
        android:nextFocusLeft="@id/button1"
        ... />
    

    您可以在此处获取更多信息:

    https://developer.android.com/training/keyboard-input/navigation#Direction

    【讨论】:

    • 谢谢。我没有显示代码,因为我正在制作一个跨平台库,而且它有点分散,没有 xml。硬编码按钮的 nextFocus 将是一个很好的解决方法。但我仍然认为滚动视图中的隐藏视图根本不应该被关注。
    • 您可以在代码中使用 setNextFocusRightId 和 setNextFocusLeftId 方法。 developer.android.com/reference/android/view/…
    • 可能是滚动视图本身获得焦点,而不是其中的项目...使用以下方法防止它获得焦点:scrollView.setFocusable(false); scrollView.setFocusableInTouchMode(false);
    • 谢谢。滚动视图确实获得了焦点,用focusable = android.view.View.NOT_FOCUSABLE (kotlin) 关闭了它,但仍然关注隐藏的、向上滚动的视图。我想我将不得不使用 setNextFocusRightId 等,这将是一个黑客和痛苦,因为我在任何视图/按钮等上都没有 id。
    • 为什么不用 RecyclerView 而不是 ScrollView?您可能不会遇到这些聚焦问题。
    猜你喜欢
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 2011-09-04
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    相关资源
    最近更新 更多