2015-09-22 52 views
0

有两个EditText,如果用户在第一个字符中输入四个字符,焦点会自动转到另一个EditText。当用户在第二个EditText中输入第一个字符时,滚动中断并且第二个编辑文本开始留在键盘后面。

另外,当用户专注于第二个EditText时,它仍然留在键盘后面。如果用户首先关注第一个EditText,然后关闭键盘并关注第二个EditText,则滚动工作完美。

这个问题只发生在三星Galaxy Grand Prime(Android 4.4.4版本)
EditText在第一次输入后停留在键盘后

你能帮助这种奇怪的行为吗?


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

解决。我已经改变了布局MyActivity.xml如下(使用滚动型和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> 
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(); 
     } 
    } 
}; 

}

+0

它不工作。另一个想法? – ondermerol

+0

在我看来,clearFocus不起作用。 – ondermerol

+0

但它适用于我的moto g3棒棒糖5.1.1 – arun

相关问题