0

There are two EditText and if the user enters four character in the first one the focus automatically goes to the other EditText. And when the user enters the first char in the second EditText, the scroll breaks and this second edittext is start to stay behind the keyboard.

Also when user focus to the second EditText, it still stays behind the keyboard. If the user first focus to the first EditText then close the keyboard and focus the second EditText, scroll works perfect.

This problems happen for only the Samsung Galaxy Grand Prime (Android 4.4.4 version).

Can you help for this strange behaviour?


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

First EditText id : yeni_sifre_bir
Second EditText id : yeni_sifre_iki
Third EditText id : textview_editText_search (This one works perfectly!!)

 <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" >


I realized that the problem is due to the losing the focus after a char entered in the second EditText. It loses focus suddenly!

ondermerol
  • 524
  • 1
  • 11
  • 29

2 Answers2

0

try 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();
        }
    }
};

}

arun
  • 1,728
  • 15
  • 15
0

Solved. I have changed the layout MyActivity.xml as below (used ScrollView and RelativeLayout instead of 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>
ondermerol
  • 524
  • 1
  • 11
  • 29