d-m*_*man 107 keyboard android
当用户点击时EditView
,Android会打开键盘,以便用户可以写入EditView
.
问题是,当用户完成写入时,无法隐藏键盘.用户必须按后退按钮才能隐藏键盘.
有没有办法Done
在键盘上显示隐藏键盘的按钮?
Par*_*ani 137
首先,您需要为目标EditText 设置android:imeOptions
等于的属性,actionDone
如下所示.这会将EditText软键盘中的"RETURN"按钮更改为"DONE"按钮.
<EditText
android:id="@+id/edittext_done"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Enter some text"
android:imeOptions="actionDone"
/>
Run Code Online (Sandbox Code Playgroud)
dma*_*oni 130
使用TextView.setImeOptions并将其传递给actionDone.喜欢textView.setImeOptions(EditorInfo.IME_ACTION_DONE);
Ode*_*ner 82
包括两个 imeOptions
和 singleLine
:
<EditText
android:id="@+id/edittext_done"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:imeOptions="actionDone"
android:singleLine="true"
/>
Run Code Online (Sandbox Code Playgroud)
小智 34
android:imeActionLabel="Done"
android:singleLine="true"
Run Code Online (Sandbox Code Playgroud)
在XML文件中工作得很好.但这也会导致editText
你输入一行你可能不想要的东西.因此,在代码中添加以下内容将确保您不会在一行中输入所有内容.
mainText.setHorizontallyScrolling(false);
mainText.setMaxLines("Maximum integer value that you want to provide");
Run Code Online (Sandbox Code Playgroud)
Sha*_*van 15
为了完成按钮
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;
}
});
Run Code Online (Sandbox Code Playgroud)
`
Nar*_*had 10
使用这两行代表你的 EditText
android:imeActionLabel="Done"
android:singleLine="true"
Run Code Online (Sandbox Code Playgroud)
或者你可以通过这一行以编程方式实现它.
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
Run Code Online (Sandbox Code Playgroud)
小智 6
使用:
android:imeActionLabel="Done"
android:singleLine="true"
Run Code Online (Sandbox Code Playgroud)
单击键盘中的时间键盘时隐藏键盘时使用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"/>
Run Code Online (Sandbox Code Playgroud)
1.2如果使用Edittext
<EditText
android:id="@+id/edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="actionDone"/>
Run Code Online (Sandbox Code Playgroud)
JAVA
EditText edittext= (EditText) findViewById(R.id.edittext);
edittext.setImeOptions(EditorInfo.IME_ACTION_DONE);
Run Code Online (Sandbox Code Playgroud)
我必须指出,许多人在不知不觉中就可以为此奋斗。
如果你想KB隐藏,当点击Done
,并设置android:imeOptions="actionDone"
与android:maxLines="1"
不设置你的EditText inputType
它将不工作作为默认inputType
的EditText上是不是"text"
作为一个很多人认为。
所以,只有设置inputType
会给你你想要的结果,不管你是什么将它设置为喜欢"text"
,"number"
...等。
在 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
}
Run Code Online (Sandbox Code Playgroud)
使用它来调用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
}
}
Run Code Online (Sandbox Code Playgroud)
如果您想要更多简化键盘操作的方法(显示、关闭、聚焦):阅读这篇文章
如果不在代码中,请不要忘记将这些选项添加到您的 edittext Xml
<EditText ...
android:imeOptions="actionDone"
android:inputType="text"/>
Run Code Online (Sandbox Code Playgroud)
需要
inputType="textMultiLine"
支持吗?阅读这篇文章,不要在 Xml 中添加imeOptions
或inputType
归档时间: |
|
查看次数: |
114169 次 |
最近记录: |