Lokesh
Lokesh

Reputation: 316

Scroll entire page when particular EditText has focus?

I have registration page,in that four EditText exists,when I click on third EditText one LinearLayout(assume password guidelines) has to be visible and at the same time total layout should be scroll to view all guidelines.When other EditText (1,2 or 4) got focus this LinearLayout(password guidelines) should be closed. I tried lot and I searched lot , no solution worked for me,please help me. For understand I did small project ,please watch it.

public class MainActivity extends AppCompatActivity {
private EditText mEditText1,mEditText2,mEditText3,mEditText4;
private LinearLayout ll,root;
ScrollView mScrollView ;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    root = (LinearLayout) findViewById(R.id.ll_linear_layout);
    ll = (LinearLayout) findViewById(R.id.ll);
    mEditText1 = (EditText) findViewById(R.id.et1);
    mEditText2 = (EditText) findViewById(R.id.et2);
    mEditText3 = (EditText) findViewById(R.id.et3);
    mEditText4 = (EditText) findViewById(R.id.et4);

    mEditText1.setOnFocusChangeListener(mListener1);
    mEditText2.setOnFocusChangeListener(mListener2);
    mEditText3.setOnFocusChangeListener(mLayoutExtract);
    mEditText4.setOnFocusChangeListener(mListener4);


    mScrollView = new ScrollView(this);

}

View.OnFocusChangeListener mListener1 = new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View view, boolean b) {
        if (b) {

        } else {

        }

    }
};
View.OnFocusChangeListener mListener2 = new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View view, boolean b) {
        if (b) {

        } else {

        }

    }
};
View.OnFocusChangeListener mLayoutExtract = new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View view, boolean b) {
        if (b) {
            ll.setVisibility(View.VISIBLE);
        } else {
            ll.setVisibility(View.GONE);
        }

    }
};
View.OnFocusChangeListener mListener4 = new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View view, boolean b) {
        if (b) {


        } else {

        }

    }
}};


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/ll_linear_layout"
xmlns:android="http://schemas.android.com/apk/res/android">
<EditText
    android:layout_marginTop="200dp"
    android:id="@+id/et1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="first name"/>
<EditText
    android:id="@+id/et2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="second name"/>
<EditText
    android:id="@+id/et3"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="second name"/>
    <LinearLayout
        android:id="@+id/ll"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:visibility="gone">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="75dp"
            android:textColor="#000000"
            android:text="Hidable text"/>
    </LinearLayout>
<EditText
    android:id="@+id/et4"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="second name"/>

Upvotes: 2

Views: 589

Answers (1)

AskNilesh
AskNilesh

Reputation: 69734

Try this

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/ll_linear_layout"
xmlns:android="http://schemas.android.com/apk/res/android">
<EditText
    android:layout_marginTop="200dp"
    android:id="@+id/et1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="first name"/>
<EditText
    android:id="@+id/et2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="second name"/>
<EditText
    android:id="@+id/et3"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="second name"/>
    <LinearLayout
        android:id="@+id/ll"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:visibility="gone">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="75dp"
            android:textColor="#000000"
            android:text="Hidable text"/>
    </LinearLayout>
<EditText
    android:id="@+id/et4"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="second name"/>
</LinearLayout>
</ScrollView>

Try this use android:windowSoftInputMode="AdjustResize" in Your Manifest where your are decraing YOur Activity like below code

<activity
    android:name=".YourActivity"
    android:parentActivityName="XXX.XXX.XXXX"
    android:windowSoftInputMode="AdjustResize" />

Upvotes: 1

Related Questions