ViewPager中的软键盘

时间:2016-09-28 06:18:27

标签: android android-edittext android-viewpager android-softkeyboard

我有ViewPager,以及包含EditText字段的几页。任务是在第一个EditText(电话号码)页面上打开软键盘,点击完成按钮切换到另一个页面并将焦点设置在第二个EditText(验证码)上。必须始终打开键盘,EditText字段必须在上方。在第二页上它被覆盖了。

<android.support.percent.PercentFrameLayout
    android:id="@+id/verification"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.AppCompatImageView
        android:id="@+id/superup_logo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        app:layout_marginTopPercent="33%"
        app:layout_widthPercent="65%"
        app:srcCompat="@drawable/animated_superup_logo_white"/>

    <superup.onboarding.NonSwipeableViewPager
        android:id="@+id/verifyPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/transition">

        <android.support.percent.PercentRelativeLayout
            android:id="@+id/layout_start"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <android.support.v7.widget.AppCompatImageView
                android:id="@+id/superup_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                app:layout_marginTopPercent="67%"
                app:layout_widthPercent="50%"
                app:srcCompat="@drawable/superup_name"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/superup_name"
                android:layout_centerHorizontal="true"
                android:text="@string/layout_start_text"
                android:textColor="@color/white"
                android:textSize="18dp"
                android:textStyle="bold"/>

        </android.support.percent.PercentRelativeLayout>

        <android.support.percent.PercentRelativeLayout
            android:id="@+id/layout_number"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layoutDirection="ltr">

            <TextView
                android:id="@+id/txt_number"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:gravity="center"
                android:text="@string/layout_number_text"
                android:textColor="@color/white"
                android:textSize="18dp"
                android:textStyle="bold"
                app:layout_marginTopPercent="3%"/>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_centerHorizontal="true"
                android:gravity="center"
                app:layout_marginBottomPercent="23%"
                app:layout_widthPercent="75%">

                <superup.onboarding.CountryCodePicker
                    android:id="@+id/country_code"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    app:contentColor="@color/white"
                    app:countryPreference="IL"
                    app:defaultNameCode="IL"
                    app:hideNameCode="true"
                    app:textSize="24sp"/>

                <EditText
                    android:id="@+id/et_number"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:digits="1234567890"
                    android:gravity="center"
                    android:imeOptions="actionDone"
                    android:inputType="number"
                    android:maxLength="10"
                    android:textColor="@color/white"
                    android:textSize="24sp"/>
            </LinearLayout>

        </android.support.percent.PercentRelativeLayout>

        <android.support.percent.PercentRelativeLayout
            android:id="@+id/layout_otp"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <superup.onboarding.PinEntryEditText
                android:id="@+id/et_code"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:cursorVisible="false"
                android:digits="1234567890"
                android:imeOptions="actionDone"
                android:inputType="number"
                android:maxLength="4"
                android:textIsSelectable="false"
                android:textSize="50dp"
                android:textStyle="bold"
                app:layout_marginBottomPercent="23%"
                app:layout_marginLeftPercent="20%"
                app:layout_marginRightPercent="20%"/>

            <TextView
                android:id="@+id/txt_wrong"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_above="@+id/et_code"
                android:layout_centerHorizontal="true"
                android:padding="10dp"
                android:text="@string/wrong_number"
                android:textColor="@color/white"
                android:textSize="16dp"
                android:textStyle="bold"/>

            <TextView
                android:id="@+id/txt_phone"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_above="@+id/txt_wrong"
                android:layout_centerHorizontal="true"
                android:layoutDirection="ltr"
                android:textColor="@color/white"
                android:textSize="20dp"
                android:textStyle="bold"/>

        </android.support.percent.PercentRelativeLayout>

    </superup.onboarding.NonSwipeableViewPager>

</android.support.percent.PercentFrameLayout>

使用页面滑动它完美,但我需要用键盘切换页面。使用verifyPager.setCurrentItem更改页面后,EditText覆盖了键盘。

et_number.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
            switch (actionId) {
                case EditorInfo.IME_ACTION_DONE:
                    verifyPager.setCurrentItem(verifyPager.getChildCount() - 1);
                    return true;
                default:
                    return false;
            }
        }
    });

三星与Android 6有这个错误,Nexus 5X / 6P /华硕不会。

1 个答案:

答案 0 :(得分:1)

我认为这是你的 <EditText android:id="@+id/et_number" android:layout_width="match_parent" android:layout_height="wrap_content" android:digits="1234567890" android:gravity="center" android:imeOptions="actionDone" android:inputType="number" android:maxLength="10" android:textColor="@color/white" android:textSize="24sp"/>

Second

这是<superup.onboarding.PinEntryEditText android:id="@+id/et_code" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:cursorVisible="false" android:digits="1234567890" android:imeOptions="actionDone" android:inputType="number" android:maxLength="4" android:textIsSelectable="false" android:textSize="50dp" android:textStyle="bold" app:layout_marginBottomPercent="23%" app:layout_marginLeftPercent="20%" app:layout_marginRightPercent="20%"/>

id of Second to First one

只需按照以下方式提供android:nextFocusDown="@+id/et_code"

First EditText

将以上代码写在.gitmodules