当用户点击EditView
时,Android会打开键盘,以便用户可以在EditView
中书写。
问题是,当用户完成写入时,无法隐藏键盘。用户必须按后退按钮才能隐藏键盘。
有没有办法在键盘上显示隐藏键盘的Done
按钮?
答案 0 :(得分:135)
首先,您需要为目标EditText设置 android:imeOptions
属性等于 actionDone
,如下所示。这会将EditText软键盘中的“RETURN”按钮更改为“完成”按钮。
<EditText
android:id="@+id/edittext_done"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Enter some text"
android:imeOptions="actionDone"
/>
答案 1 :(得分:122)
使用TextView.setImeOptions并将其传递给actionDone。
比如textView.setImeOptions(EditorInfo.IME_ACTION_DONE);
答案 2 :(得分:79)
包括 imeOptions
和 singleLine
:
<EditText
android:id="@+id/edittext_done"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:imeOptions="actionDone"
android:singleLine="true"
/>
答案 3 :(得分:32)
android:imeActionLabel="Done"
android:singleLine="true"
在XML文件中工作得很好。但这也会导致editText
继续输入您可能不想要的单行。因此,在代码中添加以下内容将确保您不会在一行中输入所有内容。
mainText.setHorizontallyScrolling(false);
mainText.setMaxLines("Maximum integer value that you want to provide");
答案 4 :(得分:14)
使用此:
android:singleLine="true"
答案 5 :(得分:9)
将这两行用于EditText
android:imeActionLabel="Done"
android:singleLine="true"
或者你可以通过这一行以编程方式实现它。
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
答案 6 :(得分:8)
获取完成按钮
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
和
xml中的 android:inputType="text"
用于处理完成后从键盘点击
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;
}
});
`
答案 7 :(得分:6)
如果小部件的属性没有改变,最好使用like
布局android:imeOptions="actionDone"
文件中的xml
。
答案 8 :(得分:5)
使用:
android:imeActionLabel="Done"
android:singleLine="true"
答案 9 :(得分:5)
当单击键盘中的下一个按钮时,将使用ActionDone 键盘是hide.Use in 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);
答案 10 :(得分:5)
我必须指出这一点,因为很多人在不知道问题的情况下可以挣扎。
如果您希望点击lookup.csv
时隐藏kb,并设置Done
&amp; android:imeOptions="actionDone"
没有设置您的EditText android:maxLines="1"
它将 NOT 工作,因为EditText的默认inputType
不是inputType
正如很多人所想的那样。
因此,仅设置"text"
会为您提供所需的结果 您将其设置为inputType
,"text"
,...等等
答案 11 :(得分:4)
代码:
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
答案 12 :(得分:3)
在Kotlin中处理隐藏键盘+完成操作的直接方法是:
UPDATE sessions SET expired = now() WHERE id = 1 AND ott = TRUE;
使用它在您的主代码中调用SELECT * FROM users WHERE id = 1 AND ott = TRUE;
。使其更具可读性和可维护性
// Set action
edittext.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
// Hide Keyboard
val inputMethodManager = context.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(windowToken, 0)
true
}
false
}
如果您想要更多简化键盘操作(显示,关闭,聚焦)的方法:Read this post
如果不在代码中,请不要忘记将这些选项添加到您的edittext Xml中
edittext.onDone {/*action*/}
需要
edittext.onDone { edittext.hideKeyboard() } fun View.hideKeyboard() { val inputMethodManager = context.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager inputMethodManager.hideSoftInputFromWindow(windowToken, 0) } fun EditText.onDone(callback: () -> Unit) { // These lines optional if you don't want to set in Xml imeOptions = EditorInfo.IME_ACTION_DONE maxLines = 1 setOnEditorActionListener { _, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_DONE) { callback.invoke() true } false } }
支持吗? Read this post,不要在Xml中添加<EditText ... android:imeOptions="actionDone" android:inputType="text"/>
或inputType="textMultiLine"
答案 13 :(得分:1)
实际上,您可以将自定义文本设置为该蓝色小按钮。在xml文件中只需使用
android:imeActionLabel="whatever"
在你的EditText上。
或者在java文件中使用
etEditText.setImeActionLabel("whatever", EditorInfo.IME_ACTION_DONE);
我随意选择 IME_ACTION_DONE 作为此功能的第二个参数应该包含的示例。可以找到这些操作的完整列表here。
应该注意,这不会导致文本出现在所有设备上的所有键盘上。某些键盘不支持该按钮上的文本(例如swiftkey)。有些设备也不支持它。一个好的规则是,如果您在按钮上看到文本,则会将其更改为您想要的任何内容。
答案 14 :(得分:0)
在您的视图中使用它
<EditText
....
....
android:imeOptions="actionDone"
android:id="@+id/edtName"
/>
答案 15 :(得分:0)
如果您使用
android:imeOptions="actionDone"
然后您必须使用
android:inputType="text"
然后只有您可以在“键盘”中看到“操作完成”按钮。
答案 16 :(得分:0)
如果您根本不想要任何按钮(例如,您正在为盲人开发GUI,而盲人的位置无法轻按,而您只能依靠单次/双击/长按):
text.setItemOptions(EditorInfo.IME_ACTION_NONE)
或者在科特林:
text.imeOptions = EditorInfo.IME_ACTION_NONE