当我按下“下一步”,用户编辑文本的焦点必须移动到密码。然后,从Password,它必须向右移动,依此类推。你能告诉我怎么编码吗?

<LinearLayout
    android:id="@+id/LinearLayout01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="User Name*" />

    <EditText
        android:id="@+id/txt_User"
        android:layout_width="290dp"
        android:layout_height="33dp"
        android:singleLine="true" />

</LinearLayout>


<LinearLayout
    android:id="@+id/LinearLayout02"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Password*" />

    <EditText
        android:id="@+id/txt_Password"
        android:layout_width="290dp"
        android:layout_height="33dp"
        android:singleLine="true"
        android:password="true" />

    <TextView
        android:id="@+id/confirm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Password*" />

    <EditText
        android:id="@+id/txt_Confirm"
        android:layout_width="290dp"
        android:layout_height="33dp"
        android:singleLine="true"
        android:password="true" />

</LinearLayout>

当前回答

尝试使用android:imeOptions="actionNext"标签为视图中的每个editText,当你点击softKeyboard的next时,它将自动聚焦到下一个editText。

其他回答

android:inputType="textNoSuggestions"
android:imeOptions="actionNext"
android:singleLine="true"
android:nextFocusForward="@+id/.."

添加额外字段

android: inputType = " textNoSuggestions "

对我来说很管用!

简单的方法,当你一个接一个只有几个字段时:

需要设置

android:maxLines=“1”

android: imeOptions = actionNext”

android: inputType = " " <-设置你的文本类型,在其他情况下,它将是多行和阻止下一步

示例:

<EditText android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:textSize="@dimen/text_large"
              android:maxLines="1"
              android:inputType="textEmailAddress"
              android:imeOptions="actionNext"
              android:layout_marginLeft="@dimen/element_margin_large"
              android:layout_marginRight="@dimen/element_margin_large"
              android:layout_marginTop="0dp"/>

添加你的editText

android:imeOptions="actionNext"
android:singleLine="true"

在manifest中为活动添加属性

    android:windowSoftInputMode="adjustResize|stateHidden"

在布局文件ScrollView设置为根或父布局所有ui

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.ukuya.marketplace.activity.SignInActivity">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

       <!--your items-->

    </ScrollView>

</LinearLayout>

如果你不希望它每次都添加,创建样式: 在values/style.xml中添加style

默认的/风格:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="editTextStyle">@style/AppTheme.CustomEditText</item>
    </style>

<style name="AppTheme.CustomEditText"     parent="android:style/Widget.EditText">
        //...
        <item name="android:imeOptions">actionNext</item>
        <item name="android:singleLine">true</item>
    </style>

在某些情况下,你可能需要手动移动焦点到下一个字段:

focusSearch(FOCUS_DOWN).requestFocus();

例如,如果您有一个文本字段,在单击时打开一个日期选择器,并且您希望在用户选择了日期并且选择器关闭后,焦点自动移动到下一个输入字段,那么您可能需要这个选项。在XML中没有办法处理这个,它必须通过编程来完成。

在你的onEditorAction处理程序中,请记住,你必须返回一个布尔值,表明你是在处理动作(true),还是你应用了一些逻辑并想要正常的行为(false),如下例所示:

EditText te = ...
te.setOnEditorActionListener(new OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event){
        if (actionId == EditorInfo.IME_ACTION_NEXT) {
            // Some logic here.
            return true; // Focus will do whatever you put in the logic.
        }
        return false;  // Focus will change according to the actionId
    }
});

我发现这当我返回真执行我的逻辑,因为焦点没有移动。