在EditText中输入数字后,下一个按钮键盘会自动将用户带到另一个EditText

时间:2016-02-04 09:03:31

标签: java android xml android-studio genymotion

制作简单的卡路里转换器。

这是图片中的问题。

我在Genymotion模拟器上。

以下是我遇到问题的屏幕部分: enter image description here

当我点击EditText数字字段时,会出现数字键盘 enter image description here

但是我必须点击下一个箭头才能进入下一个输入字段 enter image description here

在我最终离开数字键盘之前。

发生了什么?在一个编辑文本中键入一个数字后,我希望它在那里结束,而不是跳转到下一个编辑文本。另外,它很奇怪,因为如果我在两个底部的EditTexts中输入一个数字,它们就会立即结束;如果我在顶部的EditTexts中输入一个数字,它们会将我带到底部的EditTexts之一。

这是XML文件。         

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:ems="10"
        android:id="@+id/editText2"
        android:layout_below="@+id/imageView2"
        android:layout_alignEnd="@+id/imageView2"
        android:layout_alignStart="@+id/imageView2" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:ems="10"
        android:id="@+id/editText3"
        android:layout_alignBottom="@+id/editText2"
        android:layout_alignEnd="@+id/imageView4"
        android:layout_alignStart="@+id/imageView4" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:ems="10"
        android:id="@+id/editText4"
        android:layout_marginBottom="32dp"
        android:layout_alignParentBottom="true"
        android:layout_alignStart="@+id/imageView5"
        android:layout_alignEnd="@+id/imageView5" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:ems="10"
        android:id="@+id/editText5"
        android:layout_alignTop="@+id/editText4"
        android:layout_alignStart="@+id/imageView3"
        android:layout_toStartOf="@+id/editText2" />

谢谢!!!

3 个答案:

答案 0 :(得分:4)

如果你想跳转下一个字段,你使用nextFocusDown属性在editText中提到了id。

试试这个......

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:ems="10"
            android:id="@+id/editText2"
            android:layout_below="@+id/imageView2"
            android:layout_alignEnd="@+id/imageView2"
            android:layout_alignStart="@+id/imageView2" 
            android:nextFocusDown="@+id/editText3"/>

如果要在特定视图的SoftKeyboard上显示完成,请使用android:imeOptions =“actionDone”属性。

答案 1 :(得分:1)

将ime选项设置为EditText:

 <EditText
    android:imeOptions="actionDone"
    ... />

您可以选择各种选项。查看文档: http://developer.android.com/reference/android/widget/TextView.html#attr_android:imeOptions

答案 2 :(得分:0)

真正处理按下下一个(回车键)时发生的事情的唯一方法是根据应用程序的当前状态告诉它应该做什么。

final EditText edittext = (EditText) findViewById(R.id.edittext);
edittext.setOnKeyListener(new OnKeyListener() {
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        // If the event is a key-down event on the "enter" button
        if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
            (keyCode == KeyEvent.KEYCODE_ENTER)) {
          // Perform action on key press
          return true;
        }
        return false;
    }
});

要选择一个edittext,您需要像这样关注它:

editText.requestFocus();

简单的解决方案是添加:

android:imeOptions="actionNext"
android:nextFocusDown="@+id/..." <!--Obviously with the next edittext ID--