2012-05-03 29 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的總數,對吧?然後你可以增加設置標籤。 –

相關問題