gpt4 book ai didi

android - 禁用 Android TV 上的默认焦点行为

转载 作者:行者123 更新时间:2023-12-04 10:21:58 27 4
gpt4 key购买 nike

我们已经在 Android TV 上构建了自定义焦点管理器,不幸的是,我们找不到禁用默认焦点行为的方法。
当我们将元素放入 ScrollView 时,就会出现问题。 View 正在滚动以跟随默认焦点指针。问题是我们的 focusManager 以不同的方式工作,它与默认的不同步,导致 View 远离我们的焦点项目。

我们尝试了以下方法:

  • 删除所有 Tocuahbles 并用自定义类替换它们。
  • 用 FlatList 替换 ScrollView
  • 试图设置 scrollEnabled={false}
  • 尝试调用preventDefault onFocus/onScroll 事件。

  • 似乎没有任何效果。

    我们正在使用 RN 0.59.10

    enter image description here

    最佳答案

    我找到了一种方法。这有点hacky,但效果很好。
    我意识到默认焦点转到它可以找到的第一个 ScrollView 并且永远不会离开它。这给了我将焦点捕获在无大小组件中的想法,因此我创建了一个名为 FocusTrap 的组件并将其放置在我的 Root View 之上。

    import React from "react";
    import { View, ScrollView, StyleSheet, TouchableOpacity } from "react-native";

    const styles = StyleSheet.create({
    container: { flex: 1, width: 0, height: 0, flexShrink: 1, flexGrow: 0 },
    });

    export const FocusTrap = (props) => {
    return (
    <View style={styles.container}>
    <ScrollView>
    <TouchableOpacity />
    </ScrollView>
    </View>
    );
    };

    它有效地将默认焦点捕获在内部,因此我可以自由接管焦点行为。

    关于android - 禁用 Android TV 上的默认焦点行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60811901/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com