16

我有一个 Edittext 。它包含属性digits 和imeOptions (actionDone) 一起。

<android.support.v7.widget.AppCompatEditText
        android:id="@+id/edit_text_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:digits="1234567890abcdefghijklmnopqrstuvwxyz....."
        android:hint="@string/item_name"
        android:imeOptions="actionDone"
        android:maxLines="1" />

一起使用数字 && imeOptions 属性时找不到 actionDone(软关键字中的完成按钮)。我们只能找到不会改变焦点的回车按钮。我已经通过跳过 digit 属性尝试过,然后 imeOptions 正常工作。提前致谢

4

5 回答 5

26

只需将 singleLine="true" 添加到您的编辑文本中

  android:singleLine = "true"
于 2017-02-27T08:25:09.777 回答
14

setRawInputType()在您的 EditText 视图上使用

view.setRawInputType(view.getInputType() & ~EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE)

setRawInputType()call和 not很重要setInputType(),因为后者将根据 inputmethod 设置 keylistener 并且您的android:digits属性将被丢弃。setRawInputType() 只会更改输入方法并且不会触摸 KeyListener,此外& ~EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE将禁用多行模式,因此不会显示任何返回键,而是应该显示您选择的 imeOption。

基本上,singleLine 和 maxLines 有不同的行为。

于 2017-12-13T17:07:26.130 回答
1

嗨,您可以以编程方式设置:

EditText edit = view.findViewById(R.id.memo_edit_text);
edit.setRawInputType(InputType.TYPE_CLASS_TEXT);
edit.setImeActionLabel("DONE", EditorInfo.IME_ACTION_DONE);
edit.setImeOptions(EditorInfo.IME_ACTION_DONE);

在要与 IME 操作关联的 EditText 上
它适用于 textMultiLine 和任何数字,只需选择您的操作

学分:https ://stackoverflow.com/a/52503760/11858207

于 2019-07-30T14:17:13.963 回答
1

我对“android:digits”的测试似乎在 edittext 字段中引起了问题,当将 imeOptions 设置为 android:imeOptions="actionDone" 时,我无法让“完成”按钮出现在键盘上。

一旦我使用

android:inputType="text"

没有数字设置,键盘然后显示“完成”(或根据您设备的键盘打勾),然后我可以使用以下方法捕获击键:

editextField.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
                int result = actionId & EditorInfo.IME_MASK_ACTION;
                switch(result) {
                    case EditorInfo.IME_ACTION_DONE:
                        // put your code here.
                        break;
                }
                return false;
            }
        }); 
于 2017-08-31T01:03:05.243 回答
0

在 Kotlin 中,您还可以设置

isSingleLine = true
于 2021-09-08T14:46:32.470 回答