2012-05-03 32 views
2

比方说在LinearLayout中我们有两个EditText。由于第一个EditText的软键盘的“Enter”按钮是“Next”,而第二个EditText的软键盘的“Enter”按钮是“下一个”,Android系统可以以某种方式判断EditText是否是最后一个EditText。完成”。下面是代码我用来测试的EditText:检查这是否是LinearLayout中的最后一个EditText?

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    LinearLayout editContainer = new LinearLayout(this); 
    editContainer.setOrientation(LinearLayout.VERTICAL); 

    EditText firstEdit = new EditText(this); 
    firstEdit.setSingleLine(true); 

    EditText secondEdit = new EditText(this); 
    secondEdit.setSingleLine(true); 

    editContainer.addView(firstEdit); 
    editContainer.addView(secondEdit); 

    setContentView(editContainer); 
} 

有人能告诉我如何通过编程知道一个EditText是否是最后一个没有?当然,我可以遍历整个LinearLayout,但我想保留这种方法作为最后的手段。

谢谢!

回答

1

Next/Done标签设置为setImeOptions。如果你想查询这个值,你可以试试getImeOptions

+0

您能否提供一个使用getImeOptions的简单示例?我在firstEdit和secondEdit上调用它,但都getImeOptions()返回0 ... –

0

快速简单的方法是给你的视图标签'最后'。

EditText secondEdit = new EditText(this); 
secondEdit.setSingleLine(true); 
secondEdit.setTag('last'); 

你会得到与view.getTag()

+2

对不起,在真实的项目中,我动态添加EditText,以便很难判断某个EditText是否是最后一个EditText。 –

+0

啊我看到了,是的,在这种情况下,安东的建议听起来是最好的。我没有尝试过,但我认为secondEdit.getImeOptions()将返回[IME_ACTION_DONE](http://developer.android.com/reference/android/view/inputmethod/EditorInfo.html#IME_ACTION_DONE)或[IME_ACTION_GO]( http://developer.android.com/reference/android/view/inputmethod/EditorInfo.html#IME_ACTION_GO)而不是IME_ACTION_NEXT – m6tt

0

这个值可以给唯一ID的像EditTexts:

mEditText1.setId(1); 
    mEditText2.setId(2); 

然后你就可以检查wheter是焦点的EditText是最后一个或不将其编号(mEditText.getId())与EditText的总数进行比较。

同样,您可以使用setTag()getTag()方法。

+0

与m6tt相同的原因,这对我不方便。 –

+0

所以你不知何故应该知道EditText的总数,对吧?然后你可以增加设置标签。 –

相关问题