我在使用键盘(使用向上,向下,向左和向右键)在gridView上导航时遇到一些问题。
我是Android的新手,也许这个问题有一个简单的答案。我寻找解决方案,任何事情都可以帮助我。
问题是我想改变网格视图项目之间的导航方式。我想这样做有两个原因。
第一个原因与某些itens具有可点击的子图标有关(因此整个项目不可点击)。例如,当焦点从项目 i 更改为项目 i + 1 时,必须检查项目 i + 1 subitens。如果是,则根据方向将焦点更改为其中一个子对象(即,如果从左到右,则左侧的第一个子项被聚焦)。
第二个原因是在我的应用程序中,向上箭头的工作方式与左箭头和向下箭头的工作方式相同,与右箭头相同。所以,我只需要查看onKey事件的keyCode是UP还是DOWN,并分别将其转换为LEFT和RIGHT。
我认为这将是一个简单的任务:覆盖onKeyDown方法并处理这些特性,但我观察到我的onKeyDown实现仅在两种情况下被调用:(1)当按下其他键时(除了前面提到的)箭头和(2)当网格视图丢失焦点时。例如,如果项目C1是当前项目选择并且用户单击向左或向下,则不调用onKey。否则,如果键入右侧或上侧,我的方法被调用。
有没有办法取消这种网格视图的内部机制?我尝试了不同的方法,如下: (1)直接在gridview和项目(在适配器上)上实现OnKeyListener。 (2)实现不同的回调,以查看在此内部机制之前将调用哪一个(如OnFocusChangeListener,OnKeyListener,OnItemSelectedListener)。我尝试了网格视图和适配器上的每个项目。 (3)使用设置为透明图像的选择器实例化gridview。当我的keyEvent上达到了所需的项目时,我添加了一个可见的选择器。它适用于第一个事件,但是当设置了可见选择器时,它不会返回隐形选择器。
我试图说清楚,我希望你们中的任何人都可以帮助=)
非常感谢
答案 0 :(得分:1)
你好吗?
您可以尝试使用onKeyUp而不是onKeyDown,请参阅以下答案:
https://stackoverflow.com/a/20171618/1408986
和Android文档:
http://developer.android.com/training/keyboard-input/commands.html
希望这有帮助..再见!
答案 1 :(得分:0)
我通过实现两个侦听器解决了这个问题:onKey和OnItemSelected。重点是每次运行使用的网格,并使那些听众解决我的问题。非常感谢。