Avinash Kumar Pankaj
Avinash Kumar Pankaj

Reputation: 1720

how to scroll up layout when clicking on edit text

this is my layout with soft input mode and without soft input mode.

But main problem is when i click next from second last edit text, i want to show those two buttons and last edit text with soft input mode. Please help

my xml file is as follows

     <?xml version="1.0" encoding="utf-8"?>
     <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:background="@drawable/scroll_bg" >

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="521dp"
    android:layout_marginBottom="60dp"
    android:background="@drawable/bg" >

    <com.deemtech.widgets.MenuLayout
        android:id="@+id/menuTitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/txtCustomerDetails"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="140dp"
        android:gravity="center"
        android:text="@string/customer_details"
        android:textColor="#ffffff"
        android:textSize="12sp" />

    <EditText
        android:id="@+id/editNameCustomerDetails"
        style="@style/EditText"
        android:layout_below="@+id/txtCustomerDetails"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="12dp"
        android:ems="10"
        android:hint="NAME"
        android:inputType="text" />

    <RelativeLayout
        android:id="@+id/innerLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginLeft="25dp"
        android:layout_marginRight="25dp"
        android:layout_marginTop="190dp"
        android:background="@drawable/bg_create_account1x"
        android:gravity="center"
        android:paddingBottom="5dp"
        android:paddingLeft="25dp"
        android:paddingRight="25dp"
        android:paddingTop="8dp" >

        <EditText
            android:id="@+id/editEmailCustomerDetails"
            style="@style/EditText"
            android:layout_alignLeft="@+id/editPhoneCutomerDetails"
            android:layout_alignParentTop="true"
            android:layout_marginTop="52dp"
            android:ems="10"
            android:hint="EMAIL ADDRESS"
            android:inputType="textEmailAddress" />

        <EditText
            android:id="@+id/editPhoneCutomerDetails"
            style="@style/EditText"
            android:layout_below="@+id/editEmailCustomerDetails"
            android:layout_marginTop="8dp"
            android:ems="10"
            android:hint="CONTACT NUMBER"
            android:maxLength="12"
            android:inputType="phone" />

        <!--
        <EditText
            android:id="@+id/editAdditionalInfo"
            android:layout_width="150dp"
            android:layout_height="50dp"
            android:layout_alignLeft="@+id/editPhoneCutomerDetails"
            android:layout_alignRight="@+id/editPhoneCutomerDetails"
            android:layout_below="@+id/editPhoneCutomerDetails"
            android:layout_marginBottom="60dp"
            android:layout_marginTop="10dp"
            android:background="@drawable/message_additional_box1x"
            android:ems="10"
            android:hint="ADDITIONAL INFO"
            android:inputType="text"
            android:padding="10dp"
            >

            <requestFocus />
        </EditText>
        -->

        <EditText
            android:id="@+id/editAdditionalInfo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/editPhoneCutomerDetails"
            android:layout_alignParentBottom="true"
            android:layout_alignRight="@+id/editPhoneCutomerDetails"
            android:layout_below="@+id/editPhoneCutomerDetails"
            android:layout_marginBottom="60dp"
            android:layout_marginTop="8dp"
            android:hint="ADDITIONAL INFO"
            android:background="@drawable/message_additional_box1x"
            android:ems="10"
            android:singleLine="true"
            android:gravity="top"
            android:lines="3"
            android:padding="10dp"
            android:width="150dp" >

            <requestFocus />
        </EditText>
    </RelativeLayout>

    <Button
        android:id="@+id/btnBackCustomerDetails"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="448dp"
        android:layout_toLeftOf="@+id/btnSubmitCustomerDetails"
        android:background="@drawable/btn_back"
        android:contentDescription="@string/app_name" />

    <Button
        android:id="@+id/btnSubmitCustomerDetails"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/editNameCustomerDetails"
        android:layout_marginTop="448dp"
        android:background="@drawable/btn_submit"
        android:contentDescription="@string/app_name" />
</RelativeLayout>

 </ScrollView>

Upvotes: 1

Views: 6957

Answers (3)

Avinash Kumar Pankaj
Avinash Kumar Pankaj

Reputation: 1720

with the help of nimish's answer i finally got wat i wanted

    editPhoneCustomerDetails.setOnKeyListener(new OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
                    (keyCode == KeyEvent.KEYCODE_ENTER)) {

                findViewById(R.id.btnBackCustomerDetails).requestFocusFromTouch();
                findViewById(R.id.editAdditionalInfo).requestFocusFromTouch();
                //((ScrollView) findViewById(R.id.scrollView)).fullScroll(View.FOCUS_DOWN);

                //findViewById(R.id.editPhoneCutomerDetails).requestFocusFromTouch();

               // findViewById(R.id.btnBackCustomerDetails).requestFocusFromTouch(); 
            }
    return false;
        }
    });

    findViewById(R.id.editAdditionalInfo).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            //findViewById(R.id.btnBackCustomerDetails).setFocusable(true);
            findViewById(R.id.btnBackCustomerDetails).requestFocusFromTouch();
            findViewById(R.id.editAdditionalInfo).requestFocusFromTouch();
        }

    });

Upvotes: 0

Mohit Raval
Mohit Raval

Reputation: 438

check this link
or
try this android:windowSoftInputMode="adjustResize" in your activity in manifest file.

Upvotes: 0

Nimish Choudhary
Nimish Choudhary

Reputation: 2088

In your case you cant simply "adjustResize" the window. Also as you only want to show the buttons when the last edit text is clicked.

So you can try this approach, not truly suggested but will work for your scenario:

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_mainf);


    findViewById(R.id.editAdditionalInfo).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Toast.makeText(sampleMediaPlayer.this, "text", 700).show();
            findViewById(R.id.btnBackCustomerDetails).requestFocusFromTouch();
            findViewById(R.id.editAdditionalInfo).requestFocusFromTouch();
        }
    });
}

Upvotes: 3

Related Questions