gpt4 book ai didi

android - 自定义 AdapterView - onKeyDown 未调用

转载 作者:行者123 更新时间:2023-11-30 03:42:19 24 4
gpt4 key购买 nike

我通过扩展 AdapterView 创建了一个自定义的 ListView,我想在这个 View 中处理关键事件。我已经覆盖了 onKeyDown,但从未看到它被调用。我什至尝试覆盖 dispatchKeyEvent 并且也从未被调用过。我还使用 setFocusable(true) 使我的 View 可聚焦。

此外,我对哪个 View 确实具有焦点感到有点困惑。在 HierarchyView 中,树中的每个 View 都表示 hasFocus = false。

如何在我的 View 中接收关键事件?

最佳答案

看来我可以在这里回答我自己的问题。

查看 AdapterView,您可以看到它使用以下实现覆盖了 setFocusable:

 @Override
public void setFocusable(boolean focusable) {
final T adapter = getAdapter();
final boolean empty = adapter == null || adapter.getCount() == 0;

mDesiredFocusableState = focusable;
if (!focusable) {
mDesiredFocusableInTouchModeState = false;
}

super.setFocusable(focusable && (!empty || isInFilterMode()));
}

正如您在此处对 super.setFocusable 的最终调用中所见,如果适配器尚未绑定(bind)数据(意味着适配器为 null 或其 <= 0),则 View 将无法获得焦点。

因此,要解决此问题,只需在 setAdapter() 实现的末尾添加 setFocusable(true)

关于android - 自定义 AdapterView - onKeyDown 未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15532404/

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