我最近一直在为我的 Android 应用程序而苦苦挣扎。在我的应用程序中,我有一个 TableLayout,我在应用程序代码中动态填充,包括每个单元格中的 EditText,并且软键盘的“下一步”按钮行为不正确(在到达同一行中的其他单元格之前跳转到下一行)。所以我决定手动覆盖焦点更改,方法是为 EditTexts 分配 ID,然后使用 setNextFocusDownId 方法指向下一个 EditText。但这也不起作用。
我会说明情况。我的应用程序有一个包含三列的 TableLayout,这样:
EditText(1) EditText(5) EditText(10)
EditText(50) EditText(100) EditText(160)
EditText(500) EditText(1000) EditText(1600)
EditText(2500) EditText(3000) EditText(3500)
EditText(3800) EditText(4000) EditText(4500)
其中括号内的数字是 EditText 的 ID。在填充此 TableLayout 时,我将 EditTexts 列表保存在名为 focusList 的 ArrayList 中,以便稍后分配 NextFocus Id。填充表格后,我调用此方法:
private void manageFocusList() {
for (int i=0; i<focusList.size()-1; i++){
focusList.get(i).setImeOptions(0x05);
focusList.get(i).setNextFocusDownId(focusList.get(i+1).getId());
}
focusList.get(focusList.size()-1).setImeOptions(0x06);
}
EditText 列表在 ArrayList 中正确排序,并且 EditTexts 之间的链接已成功完成。
为了测试这一点,我在按下软键盘上的 Next 按钮时放置了一些打印痕迹。这就是我得到的:
01-07 19:34:32.121: I/System.out(27287): My ID is: 1
01-07 19:34:32.121: I/System.out(27287): NextFocusDown: 5
01-07 19:34:32.521: I/System.out(27287): My ID is: 5
01-07 19:34:32.521: I/System.out(27287): NextFocusDown: 10
01-07 19:36:50.146: I/System.out(27287): My ID is: 10
01-07 19:36:50.146: I/System.out(27287): NextFocusDown: 50
等等...
但是在应用程序中,它是这样跳转的:
1->5
5->50
50->100
100->160
160->1600
1600->1000
1000->500
500->2500
从现在开始,它会继续做正确的事
2500->3000
3000->3500
3500->3800
3800->4000
4000->4500
我在三星 Galaxy S3 和模拟器中都进行了测试,结果完全一样。
我希望你能帮帮我!
感谢您的时间!