我有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 /华硕不会。
答案 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
。