android – EditText没有收到TAB键事件 – stock soft vk

android – EditText没有收到TAB键事件 – stock soft vk,第1张

概述我的应用程序有一个ListView和一个位于它下面的EditText.由于某种原因,TAB键不会触发onKeyListener.我正在处理的所有其他键(DEL,ENTER,DPAD_UP / DOWN / CENTER)都很好.我在dispatchKeyEvent中添加了一个断点,再次没有运气接收TAB事件. 我的应用程序以前有一个用于显示文本的大型TextView,在此期间,TAB事件被收到了. 我的应用程序有一个ListVIEw和一个位于它下面的EditText.由于某种原因,TAB键不会触发onKeyListener.我正在处理的所有其他键(DEL,ENTER,DPAD_UP / DOWN / CENTER)都很好.我在dispatchKeyEvent中添加了一个断点,再次没有运气接收TAB事件.

我的应用程序以前有一个用于显示文本的大型TextVIEw,在此期间,TAB事件被收到了. ListVIEw现在已经替换了TextVIEw.

我完全不知道为什么不再接收TAB事件.这是一个库存Xoom,运行ICS 4.0.4&股票N1,2.3.6.

我将当前代码与使用TextVIEw的版本进行了比较,而且大部分代码只是为了处理TextVIEw而不是TextVIEw.除了nextFocusleft和nextFocusRight属性之外,EditText没有其他任何改变.

编辑:我刚尝试使用Go Keyboard和Hacker的键盘,TAB收到了.看起来这只是一些虚拟键盘

解决方法 我想我可能会看到这个问题.查看ListVIEw. java的源代码,有一种机制可以使用在列表项中移动焦点的键事件.查看此方法之前的注释以及方法中间的注释块.
/** * To avoID horizontal focus searches changing the selected item,we * manually focus search within the selected item (as applicable),and * prevent focus from jumPing to something within another item. * @param direction one of {VIEw.FOCUS_left,VIEw.FOCUS_RIGHT} * @return Whether this consumes the key event. */private boolean handleHorizontalFocusWithinListItem(int direction) {    if (direction != VIEw.FOCUS_left && direction != VIEw.FOCUS_RIGHT)  {        throw new IllegalArgumentException("direction must be one of"                + " {VIEw.FOCUS_left,VIEw.FOCUS_RIGHT}");    }    final int numChildren = getChildCount();    if (mItemsCanFocus && numChildren > 0 && mSelectedposition != INVALID_position) {        final VIEw selectedVIEw = getSelectedVIEw();        if (selectedVIEw != null && selectedVIEw.hasFocus() &&                selectedVIEw instanceof VIEwGroup) {            final VIEw currentFocus = selectedVIEw.findFocus();            final VIEw nextFocus = FocusFinder.getInstance().findNextFocus(                    (VIEwGroup) selectedVIEw,currentFocus,direction);            if (nextFocus != null) {                // do the math to get interesting rect in next focus' coordinates                currentFocus.getFocusedRect(mTempRect);                offsetDescendantRectToMyCoords(currentFocus,mTempRect);                offsetRectIntoDescendantCoords(nextFocus,mTempRect);                if (nextFocus.requestFocus(direction,mTempRect)) {                    return true;                }            }            // we are blocking the key from being handled (by returning true)            // if the global result is going to be some other vIEw within this            // List.  this is to acheive the overall goal of having            // horizontal d-pad navigation remain in the current item.            final VIEw globalNextFocus = FocusFinder.getInstance().findNextFocus(                    (VIEwGroup) getRootVIEw(),direction);            if (globalNextFocus != null) {                return isVIEwAncestorOf(globalNextFocus,this);            }        }    }    return false;}

单个列表元素中是否有多个可聚焦项目?如果是这样,此代码将使用Tab键.如果是这种情况,那么您可能想要使一些项目不可聚焦或考虑另一种设计选项.

总结

以上是内存溢出为你收集整理的android – EditText没有收到TAB键事件 – stock soft vk全部内容,希望文章能够帮你解决android – EditText没有收到TAB键事件 – stock soft vk所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1135423.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存