我一直在努力与我的Android应用程序最近。在我的应用程序中,我有一个TableLayout,我在应用程序代码中进行了填充,包括每个单元格中的EditText和软键盘的“下一步”按钮的行为不正确(在进入同一行中的其他单元格之前跳到下一行)。所以我决定通过将ID分配给EditTexts,然后使用setNextFocusDownId方法指向下一个EditText来手动覆盖焦点更改。但是这也不起作用。SetNextFocusDownId行为不正确
我会解释一下情况。 我的应用程序有三列的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时,我将EditText列表保存在名为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之间的联系被成功地完成。
为了测试这一点,我在按下软键盘中的下一步按钮时放置了一些打印痕迹。这就是我得到:
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和模拟器中都测试过,行为完全一样。
我希望你能帮助我!
谢谢你的时间!