如何使Android EditView“完成”button,并单击时隐藏键盘?
当用户点击EditView
,Android打开键盘,以便用户可以在EditView
。
问题是,当用户完成写作时,无法隐藏键盘。 用户必须按下后退button来隐藏键盘。
有没有办法在键盘上显示一个将隐藏键盘的Done
button?
使用TextView.setImeOptions并将其传递给actionDone。 像textView.setImeOptions(EditorInfo.IME_ACTION_DONE);
首先你需要为你的目标EditText设置android:imeOptions
属性等于actionDone
,如下所示。 这会将您的EditText软键盘中的“返回”button更改为“完成”button。
<EditText android:id="@+id/edittext_done" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="Enter some text" android:imeOptions="actionDone" />
包括imeOptions
和 singleLine
:
<EditText android:id="@+id/edittext_done" android:layout_width="fill_parent" android:layout_height="wrap_content" android:imeOptions="actionDone" android:singleLine="true" />
机器人:imeActionLabel = “完成”
android:singleLine =“true ”
在XML文件中工作得很好。 但是这也会导致editText继续input一个你不想要的行。 因此,将以下代码添加到您的代码中将确保您不会在一行中input所有内容。
mainText.setHorizontallyScrolling(假);
mainText.setMaxLines(“你想提供的最大整数值”);
用这个:
android:singleLine="true"
使用这两行到您的EditText
android:imeActionLabel="Done" android:singleLine="true"
或者你可以通过这一行以编程方式实现它。
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
如果属性没有改变,那么在layout xml
文件中使用像android:imeOptions="actionDone"
可能会更好。
使用:
android:imeActionLabel="Done" android:singleLine="true"
对于代码:
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
我必须指出,因为很多人都可以在不知道问题的情况下进行斗争。
如果你想在单击Done
时隐藏kb,并且设置了android:imeOptions="actionDone"
& android:maxLines="1"
而不设置EditTextinputtypes,它将不起作用,因为EditText的默认inputType
不是"text"
正如很多人所想的那样。
所以,只设置inputType
会给你你想要的结果, 无论你将它设置为像"text"
, "number"
等等。
在时间键盘隐藏的键盘上的下一个button中单击时使用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"/>
JAVA
EditText edittext= (EditText) findViewById(R.id.edittext); edittext.setImeOptions(EditorInfo.IME_ACTION_DONE);
其实你可以设置自定义文本到那个小蓝色的button。 在xml文件中使用
android:imeActionLabel="whatever"
在你的EditText上。
或者在java文件中使用
etEditText.setImeActionLabel("whatever", EditorInfo.IME_ACTION_DONE);
我任意selectIME_ACTION_DONE作为这个函数的第二个参数的例子。 这些操作的完整列表可以在这里find。
应该指出的是,这不会导致文本出现在所有设备上的所有键盘上。 有些键盘不支持该button上的文本(例如swiftkey)。 有些设备也不支持。 一个很好的规则是,如果你看到button上已经有了文本,这会改变它到你想要的。
用这个
android:inputType="textAutoComplete"