当前位置: 首页 > 知识库问答 >
问题:

数字输入字段上的空格键事件行为?

劳灵均
2023-03-14

我使用"android: inputType="number"属性创建了两个EditText。

这里我使用的是硬件键盘,所以当我在textField上执行空格键事件时,焦点控制直接从editText视图转移到屏幕的其他随机视图。在普通文本字段类型中,它将其作为另一个字符,这很好。

任何人都知道如何使用空间键事件来保持对同一领域的关注。

共有3个答案

阎丰羽
2023-03-14

因此,看起来您的问题与EditText的“输入”类型无关,而是来自键盘的按键事件......

所以“希望”这会帮你解决问题(通过按下“空格”按钮“跳过”下一个”事件)

 // do for both EditText(s)
 editText1.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        log.d("main","KeyPress:"+ actionID);
        if (event != null ) { log.d("main","KeyPress:" + event.getKeyCode() ); }
            if ( actionId == EditorInfo.IME_ACTION_NEXT) {
                // do 'nothing' or 'add a space' if you want that
                return true;
            }
            return false;
        }
    });

这很可能是正在发生的事情(没有您的XML很难说)

所以我找到了一些东西可以帮助你找出模式可能会导致解决它...从https://stackoverflow.com/a/17990096

如果您的XML(或等效代码)和/或物理键盘“space”中存在Android:nextFocus….设置,则也会发出IME\u ACTION\u NEXT(或其他类似的IME操作)的信号

如果编辑信息。IME\u ACTION\u NEXT不是导致您出现问题的IME操作,那么您可以试试这个…来确定是什么。

出发地:https://stackoverflow.com/a/4171427

如果您有物理键盘,您可以使用它来检测按键事件并适当地处理它们,

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) {
    log.d("main","KeyPress:" + keyCode);
    if (event != null ) { log.d("main","KeyPress:" + event.getKeyCode() ); }
   // if you want to 'handle' the keyPess here, best to use switch like below
   // switch (keyCode) {
   //     case KeyEvent.KEYCODE_A:
    //    {
    //        //your Action code
    //        return true;
    //    }
   /// }
    return super.onKeyDown(keyCode, event);
}

但是…如果你有软件键盘,你需要使用addTextChangedListener/TextWatcher,因为物理按键被EditText“吃掉”(从我在另一篇文章中看到的,但从我的测试来看似乎是正确的)

mMyEditText.addTextChangedListener(new TextWatcher()
{
    public void afterTextChanged(Editable s) 
    {
    }
    public void beforeTextChanged(CharSequence s, int start, int count, int after) 
    {
        /*This method is called to notify you that, within s, the count characters beginning at start are about to be replaced by new text with length after. It is an error to attempt to make changes to s from this callback.*/ 
    }
    public void onTextChanged(CharSequence s, int start, int before, int count) 
    {
    }
);

您可以覆盖EditText在输入“空格”时执行的操作。

在“软件键盘”中,这似乎很容易,但物理键盘似乎有点困难。

https://developer.android.com/reference/android/widget/TextView.OnEditorActionListener.html

类似于这个问题(但“space”而不是“enter”)Android-在EditText中处理“enter”

这可以帮助您确定正在更改的焦点的“模式”。是否是随机的(很可能不是随机的,但可能很有趣)

http://developer.android.com/reference/android/view/View.OnFocusChangeListener.html

// try this to see
View.OnFocusChangeListener changeListener = new View.OnFocusChangeListener()                
    {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            log.d("YourClassName", "FocusChanged" + hasFocus)
        }
    };

 EditText1.setOnFocusChangeListener(changeListener);
 EditText2.setOnFocusChangeListener(changeListener);
 Button.setOnFocusChangeListener(changeListener);
 // ... etc... (add to views to see if there is pattern)
宋宏毅
2023-03-14

使用android: imeOptions="actionNext"更改/添加您的EditText属性,如下所示

<EditText
    android:id="@+id/edit_text"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:imeOptions="actionNext"
    android:inputType="text" /> 

或者使用android:imeOptions=“actionNone”查看EditText的默认行为

<EditText
    android:id="@+id/edit_text"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:imeOptions="actionNone"
    android:inputType="text" />
王建华
2023-03-14

使用editText.setInputType(InputType.TYPE\u CLASS\u NUMBER)可能会解决您的问题。

 类似资料:
  • 问题内容: 问候,我有这个输入字段, 我想在单击提交按钮时调用IsEmpty函数。 我尝试了下面的代码,但是没有用。有什么建议吗? 问题答案:

  • 我试图写一个快速的程序,在输入的字符串中计数空格的数量。这是我到目前为止所拥有的: while循环首先使用s.indexOf(“”)查找字符串s中的第一个空格,将其替换为char Z,然后将值SpaceCount加1。此过程重复,直到s.indexOf没有找到空白,导致i为-1,从而停止循环。 换句话说,每次找到空白时,SpaceCount都会增加1,然后向用户显示空白的总数。或者应该是... 问

  • 问题内容: 我有一个最大字符范围为16的字符,每4个字符后,我要添加一个负字符或空格,然后编写其余的字符,例如本示例5022-2222-2222-2222。有我的代码,但是那不起作用,该怎么办? 我在 范围方法中添加此代码。 问题答案: 我们可以从实现oisdk:s SwiftSequence 方法的(版本号)的Swift 3版本开始: 在这种情况下,实现自定义格式是创建4个字符的块并将其通过“-

  • 当我在做表单处理时,我有一个form.html文件和一个process.jsp文件。html将显示表单,action设置为process.jsp。我需要检查用户是否填写了输入字段。 如果用户没有输入任何内容并单击submit按钮,request.getParameter(“name”)的返回值是什么。因为我不知道它是空值还是空字符串,所以我都检查了。而只是想弄清楚它是空字符串还是空字符串。

  • 我发现当有人按下“回车”键时,这个问题对于提交表单非常有用: Javascript: 超文本标记语言: 我想知道的是,当按下“回车”键时,将字段设置为模糊。模糊sender字段的效果是什么? 我想保留ngEnter指令的原样,因为我想将其重新用于其他函数。 更新:我知道我可以创建一个完整的指令来进行模糊处理(我现在就是这么做的),但我想做的是能够做这样的事情: 或者如何将当前元素作为参数传递?

  • 我想在ReactJS onChange中执行一个附加函数,在input type text字段中,那么render函数是: