有两个EditText
,如果用户在第一个字符中输入四个字符,焦点会自动转到另一个EditText
。当用户在第二个EditText
中输入第一个字符时,滚动中断并且第二个edittext开始留在键盘后面。
此外,当用户专注于第二个EditText
时,它仍然会停留在键盘后面。如果用户首先对焦于第一个EditText
然后关闭键盘并对焦第二个EditText
,则滚动效果很好。
只有三星Galaxy Grand Prime(Android 4.4.4版本)才会出现此问题。
你能帮助解决这种奇怪的行为吗?
MyActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
//.....
txtNewPin.setFocusable(true);
txtNewPin2.setFocusable(true);
txtNewPin.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
txtNewPin.addTextChangedListener(getTextChangedListener_txtNewPin());
txtNewPin2.addTextChangedListener(getTextChangedListener_txtNewPin2());
//.....
}
private TextWatcher getTextChangedListener_txtNewPin() {
return new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.length() == 4) {
txtNewPin.clearFocus();
txtNewPin2.requestFocus();
}
}
@Override
public void afterTextChanged(Editable editable) {
}
};
}
private TextWatcher getTextChangedListener_txtNewPin2() {
return new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.length() == 4) {
kart_sifre_degistir_button.performClick();
}
}
@Override
public void afterTextChanged(Editable editable) {
}
};
}
MyActivity xml
第一个EditText id:yeni_sifre_bir
第二个EditText id:yeni_sifre_iki
第三个EditText id:textview_editText_search(这个完美无缺!! )
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.xxxx.hce.HCEKartSifreDegistirme">
<RelativeLayout
android:id="@+id/creditCardBackground"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
...>
....
</RelativeLayout>
<LinearLayout
android:id="@+id/sinan1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/creditCardBackground"
android:layout_marginTop="10dp"
android:background="@color/light_gray"
android:descendantFocusability="beforeDescendants"
android:focusable="true"
android:focusableInTouchMode="true"
android:imeOptions="flagNoFullscreen"
android:orientation="vertical">
<com.xxxx.yyyyyy.BlackBrandTextview
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="4 haneli yeni HCE kart şifrenizi belirleyin"
android:textSize="14dp" />
<com.xxxx.yyyyyy.EdittextObject
android:id="@+id/yeni_sifre_bir"
android:layout_width="240dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="5dp"
android:background="@drawable/edittext_shape"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:imeOptions="flagNoFullscreen"
android:inputType="numberPassword"
android:maxLength="4"
android:padding="5dp"
android:textSize="24dp" />
<com.xxxx.yyyyyy.BlackBrandTextview
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="Yeni şifrenizi tekrar giriniz"
android:textSize="14dp" />
<com.xxxx.yyyyyy.EdittextObject
android:id="@+id/yeni_sifre_iki"
android:layout_width="240dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="5dp"
android:background="@drawable/edittext_shape"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:imeOptions="flagNoFullscreen"
android:inputType="numberPassword"
android:maxLength="4"
android:padding="5dp"
android:textSize="24dp" />
</LinearLayout>
<EditText
android:id="@+id/textview_editText_search"
android:layout_width="300dp"
android:layout_height="40dp"
android:layout_above="@+id/kart_sifre_degistir_button"
android:layout_centerVertical="true"
android:background="@color/White"
android:paddingLeft="10dp"
android:textColor="@color/Black" />
<com.xxxx.yyyyyy.ButtonObject
android:id="@+id/kart_sifre_degistir_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="15dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="5dp"
android:background="@drawable/button_shape_dijitalkartekle"
android:text="Onayla"
android:textColor="@color/White" />
</RelativeLayout>
的的Manifest.xml
<activity
android:name="com.xxxxx.yyyyy.MyActivity"
android:label="@string/title_activity_hcekart_sifre_degistirme"
android:screenOrientation="portrait" >
我意识到问题是由于在第二个EditText中输入一个字符后失去焦点。它突然失去了焦点!
答案 0 :(得分:0)
尝试afterTextChanged
private TextWatcher getTextChangedListener_txtNewPin() {
return new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable editable) {
if (editable.length() == 4) {
txtNewPin.clearFocus();
txtNewPin2.requestFocus();
}
}
};
}
答案 1 :(得分:0)
解决。我已经更改了布局 MyActivity.xml ,如下所示(使用ScrollView和RelativeLayout而不是LinearLayout)
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/creditCardBackground"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
.... >
....
</RelativeLayout>
<RelativeLayout
android:layout_below="@+id/creditCardBackground"
android:layout_marginTop="20dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/...">
<com.xxx.yyy.BlackBrandTextview
android:id="@+id/limit_info_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:padding="10dp"
android:text="...."
android:textColor="@color/..." />
<RelativeLayout
android:id="@+id/relative_oran_alt_giris"
android:layout_below="@+id/limit_info_text"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="visible" >
<com.xxx.yyy.BlackBrandTextview
android:id="@+id/tutaroraninfoaltkucuk_oran"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center"
android:textSize="14dp"
android:text="..." />
<com.xxx.yyy.EdittextObject
android:id="@+id/yeni_sifre_bir"
android:layout_below="@+id/tutaroraninfoaltkucuk_oran"
android:layout_width="240dp"
android:layout_height="wrap_content"
android:background="@drawable/..."
android:gravity="center"
android:inputType="numberPassword"
android:layout_marginTop="5dp"
android:maxLength="4"
android:padding="5dp"
android:textSize="24dp"
android:layout_centerHorizontal="true"/>
<com.xxx.yyy.BlackBrandTextview
android:id="@+id/tutaroraninfoaltkucuk_oran1"
android:layout_below="@+id/yeni_sifre_bir"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center"
android:textSize="14dp"
android:text="..." />
<com.xxx.yyy.EdittextObject
android:id="@+id/yeni_sifre_iki"
android:layout_below="@+id/tutaroraninfoaltkucuk_oran1"
android:layout_width="240dp"
android:layout_height="wrap_content"
android:background="@drawable/..."
android:gravity="center"
android:inputType="numberPassword"
android:layout_marginTop="5dp"
android:maxLength="4"
android:padding="5dp"
android:textSize="24dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"/>
</RelativeLayout>
<com.xxx.yyy.ButtonObject
android:id="@+id/kart_sifre_degistir_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginBottom="10dp"
android:layout_marginTop="285dp"
android:background="@drawable/...."
android:text="Onayla"
android:textColor="@color/..." />
</RelativeLayout>
</RelativeLayout>
</ScrollView>