如何在EditText中用完成按钮替换换行符按钮

时间:2017-10-23 19:33:58

标签: java android xml

我正在尝试制作我的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,我有使用maxLinesinputTypeimeOptions的每个组合都无济于事。

按钮不会改为&#34;完成&#34;。但是使用android:singleLine="true"会立即修复....

现在我不关心点击后需要做什么,我只想将按钮改为&#34;完成&#34;

1 个答案:

答案 0 :(得分:0)

ImeOptionsImeActionLabel设置为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;
});

希望这有帮助!