我正在尝试制作我的EditText而不是使用newline
按钮来显示Done
按钮。
关于SO的许多问题的典型问题,但大多数建议使用不推荐使用的singleLine="true"
。
这是我的XML,显示EditText:
// Other XML
<EditText
android:id="@+id/name"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_"
android:hint="@string/character_name_hint"
android:imeOptions="actionDone"
android:maxLines="1"
android:inputType="text"
android:textStyle="italic" />
// Rest of the XML...
然而,使用android:imeOptions="actionDone"
并不起作用,也没有以编程方式设置它name.setImeOptions(EditorInfo.IME_ACTION_DONE);
我在两个不同的模拟器和一个实时设备上尝试过它,API级别从21到26,我有使用maxLines
,inputType
和imeOptions
的每个组合都无济于事。
按钮不会改为&#34;完成&#34;。但是使用android:singleLine="true"
会立即修复....
现在我不关心点击后需要做什么,我只想将按钮改为&#34;完成&#34;
答案 0 :(得分:0)
将ImeOptions
和ImeActionLabel
设置为EditText
。
<强>像:强>
name.setImeOptions(KeyEvent.ACTION_DOWN);
name.setImeActionLabel("DONE", KeyEvent.KEYCODE_ENTER);
然后为完成按钮的点击事件添加setOnKeyListener
。
name.setOnKeyListener((v, keyCode, event) -> {
if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
// your code goes here...
return true;
}
return false;
});
希望这有帮助!