如何使Android EditView“完成”button,并单击时隐藏键盘?

当用户点击EditView ,Android打开键盘,以便用户可以在EditView

问题是,当用户完成写作时,无法隐藏键盘。 用户必须按下后退button来隐藏键盘。

有没有办法在键盘上显示一个将隐藏键盘的Donebutton?

使用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.setHorizo​​ntallyScrolling(假);
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"