我有一个Android ListView,它可以包含不同类型的listItem。 一些列表项本身具有多个可聚焦元素。 我正在寻找一种能够使用硬件键盘导航列表的方法,以及能够在listitem中选择可聚焦元素并在它们之间导航。
例如,在下图中,所有listItem都有多个按钮。因此,当我打开我的Activity时,我应该能够使用键盘向上和向下箭头浏览listitem。
但是当我按下Enter(或D-PAD)时,焦点应该转到listItem内的第一个按钮。之后,我应该能够使用箭头键浏览所有按钮
当我为所有按钮设置focusable false并在listView本身上设置listView.setItemsCanFocus(false)时,我能够实现第一种情况。
我尝试在从适配器返回视图之前设置setFocusable(false),然后在列表中处理它们OnItemClickListener
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
View v = listView.getChildAt(position);
v.setFocusable(true);
v.requestFocus();
Button b1 = (Button)(listView.getChildAt(position).findViewById(R.id.butt1));
Button b2 = (Button)(listView.getChildAt(position).findViewById(R.id.butt1));
b1.setFocusable(true);
b2.setFocusable(true);
b1.requestFocus();
}
});
但它也没有把重点放在按钮上。