Answers:
使用TextView.setImeOptions并将其传递给actionDone。喜欢textView.setImeOptions(EditorInfo.IME_ACTION_DONE);
textView.setImeOptions(EditorInfo.IME_ACTION_DONE);
textView.singleLine(true)
才能使其以编程方式工作。
首先,您需要为目标EditText 设置android:imeOptions
等于的属性,actionDone
如下所示。这会将EditText软键盘中的“返回”按钮更改为“完成”按钮。
<EditText
android:id="@+id/edittext_done"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Enter some text"
android:imeOptions="actionDone"
/>
android:singleLine="true"
得到这个通过XML工作
android:imeActionLabel="Done"
android:singleLine="true"
在XML文件中工作正常。但这也会导致editText
继续输入您可能不想输入的一行。因此,在代码中添加以下内容将确保您最终不会在一行上键入所有内容。
mainText.setHorizontallyScrolling(false);
mainText.setMaxLines("Maximum integer value that you want to provide");
为了完成按钮
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;
}
});
`
用这个:
android:singleLine="true"
actionDone
防止某些设备做出不同反应,我决定在其中也有一个错误。
使用这两行 EditText
android:imeActionLabel="Done"
android:singleLine="true"
或者您可以通过此行以编程方式实现它。
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
用:
android:imeActionLabel="Done"
android:singleLine="true"
在隐藏时间键盘的键盘上单击下一个按钮时使用ActionDone。在“编辑文本”或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"/>
爪哇
EditText edittext= (EditText) findViewById(R.id.edittext);
edittext.setImeOptions(EditorInfo.IME_ACTION_DONE);
实际上,您可以将自定义文本设置为该蓝色小按钮。在xml文件中,只需使用
android:imeActionLabel="whatever"
在您的EditText上。
还是在java文件中使用
etEditText.setImeActionLabel("whatever", EditorInfo.IME_ACTION_DONE);
我随意选择IME_ACTION_DONE作为该函数第二个参数应包含的示例。这些操作的完整列表可以在这里找到。
应当注意,这不会导致文本出现在所有设备上的所有键盘上。某些键盘不支持该按钮上的文本(例如swiftkey)。而且某些设备也不支持。一个好的规则是,如果您已经在按钮上看到了文本,这会将其更改为您想要的任何内容。
在Kotlin中处理隐藏键盘+完成操作的直接方法是:
// 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
}
使用它来调用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
}
}
如果您想要更多简化键盘操作的方法(显示,关闭,聚焦):请阅读此文章
如果不在代码中,请不要忘记将这些选项添加到您的edittext Xml中
<EditText ...
android:imeOptions="actionDone"
android:inputType="text"/>
需要
inputType="textMultiLine"
支援吗?阅读这篇文章,不要添加imeOptions
或inputType
使用Xml
在您看来使用
<EditText
....
....
android:imeOptions="actionDone"
android:id="@+id/edtName"
/>
如果您正在使用
android:imeOptions="actionDone"
那么你必须使用
android:inputType="text"
那么只有您可以在“键盘”中看到“操作完成”按钮。