2016-05-20 61 views
1

我有一個EditText,ImeOptions設置爲EditorInfo.IME_ACTION_NEXT。所以當字段聚焦時,鍵盤上會顯示「下一步」按鈕。 當用戶輸入時(出於某些原因),我希望按鈕更改爲「完成」。 所以我有一個TextWatcher,我嘗試將ImeOptions更改爲「afterTextChanged」上的EditorInfo.IME_ACTION_DONE,但鍵盤上的按鍵不會更改。 我試圖隱藏鍵盤,更改ImeOptions並再次顯示鍵盤,但它不起作用(此解決方案適用於iOS)。更新當前聚焦的ImeOptions EditText

有人知道該怎麼做嗎?

回答

0

我試過這個,它的工作原理,問題是你有時可以看到鍵盤出現和消失的時間。

@Override 
public void afterTextChanged(Editable s) { 

    if (/*condition*/) { 

     // Change the IME of the current focused EditText 
     editText.setImeOptions(EditorInfo.IME_ACTION_DONE); 


     // Hide the keyboard 
     hideKeyboard(activity); 

     // Restart the input on the current focused EditText 
     InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); 
     imm.restartInput(editText); 

     // Show the keyboard 
     showKeyboard(activity); 
    } 
} 
0

你可以嘗試這樣的事情:

if (your condition) { 


    youreditText.setImeOptions(EditorInfo.IME_ACTION_DONE); 
    hideKeyboard(activity); 
    InputMethodManager input= (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); 
    input.restartInput(youreditText); 

    showKeyboard(youractivity); 
}