manager - 如何點擊Android EditView“完成”按鈕並隱藏鍵盤?




gboard (9)

ActionDone用於點擊時間鍵盤隱藏的鍵盤中的下一個按鈕。在Edit Text或AppcompatEdit中使用

XML

1.1如果您使用AppCompatEdittext

    <android.support.v7.widget.AppCompatEditText
    android:id="@+id/edittext"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:imeOptions="actionDone"/>

1.2如果您使用Edittext

    <EditText
    android:id="@+id/edittext"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:imeOptions="actionDone"/>

JAVA

EditText edittext= (EditText) findViewById(R.id.edittext);
edittext.setImeOptions(EditorInfo.IME_ACTION_DONE);

當用戶點擊EditView ,Android會打開鍵盤,以便用戶可以在EditView

問題在於,當用戶完成寫作時,無法隱藏鍵盤。 用戶必須按下後退按鈕以隱藏鍵盤。

有沒有辦法在鍵盤上顯示一個可以隱藏鍵盤的Done按鈕?


獲取完成按鈕

editText.setImeOptions(EditorInfo.IME_ACTION_DONE);

android:inputType="text"在xml中

用於從鍵盤點擊完成處理

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event){ if(actionId == EditorInfo.IME_ACTION_DONE){ // Your action on done return true; } return false; } });


使用這兩行到您的EditText

android:imeActionLabel="Done"
android:singleLine="true"

或者你可以通過這一行以編程方式實現它。

editText.setImeOptions(EditorInfo.IME_ACTION_DONE);

使用:

android:imeActionLabel="Done"
android:singleLine="true" 

包括imeOptions singleLine

<EditText 
   android:id="@+id/edittext_done"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:imeOptions="actionDone"
   android:singleLine="true"
   />

如果屬性沒有改變,那麼在layout xml文件中使用像android:imeOptions="actionDone"可能會更好。


我必須指出,因為很多人都可以在不知道問題的情況下努力解決問題。

如果你想在單擊Done時隱藏kb,並且在沒有設置EditText inputType的情況下設置android:imeOptions="actionDone"android:maxLines="1" ,它將不起作用,因為EditText的默認inputType不是"text"正如很多人所想的那樣。

所以,只設置inputType會給你想要的結果, 無論你將它設置為像"text""number"等等。


用這個:

android:singleLine="true"

android:imeActionLabel="Done" 
android:singleLine="true"

在XML文件中工作得很好。 但是這也會導致editText繼續輸入你不想要的單行。 因此,在代碼中添加以下內容將確保您不會在單行上輸入所有內容。

mainText.setHorizontallyScrolling(false);
mainText.setMaxLines("Maximum integer value that you want to provide");




keyboard