Android:如何找到给定方向上的最近邻居(视图元素)
我正在寻找一种在应用程序中导航的方法,使用虚拟方向键抛出所有元素。但是如何找到上下左右方向最近的邻居呢? 例如,我收到一个要关闭的事件,现在我想将焦点设置在下面的按钮上。
我不想像这样使用 xml 文件中的定义:
<LinearLayout android:orientation="vertical" ... >
<Button android:id="@+id/top" android:nextFocusUp="@+id/bottom" ... />
<Button android:id="@+id/bottom" android:nextFocusDown="@+id/top" ... />
</LinearLayout>
我该怎么做?
谢谢。
I'm searching a method to navigate in a app throw all elements with a virtual dpad. But how do I find the nearest neighbor in the directions up, down, left and right?
e.g I have an event received to go down, now I want to set the focus on the button below.
I don't want to use the definition in the xml files like this:
<LinearLayout android:orientation="vertical" ... >
<Button android:id="@+id/top" android:nextFocusUp="@+id/bottom" ... />
<Button android:id="@+id/bottom" android:nextFocusDown="@+id/top" ... />
</LinearLayout>
How can I do that?
Thx.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
为此,您应该重写
Activity
中的onKeyDown()
方法,您可以使用View.getFocusedChild()
方法找到当前聚焦的视图,然后使用View.focusSearch(int)
用于搜索下一个视图,View.requestFocus()
用于获取焦点。我希望你能结合这些方法以获得好的结果:)
For this you should override
onKeyDown()
method inActivity
, there you can find currently focused view with methodView.getFocusedChild()
, then useView.focusSearch(int)
for searching next view, andView.requestFocus()
for getting focus.I hope you can combine this methods for good result :)
我找到了聪明的解决方案(例如,向下):
仅此而已,内部算法在您选择的方向上找到下一个元素
I found the smart solution (e.g for go down):
Thats all, an internal algortihm find the next element in your selected direction