android making layout scrollable when soft keyboard open, but not shifting it upwards

前端 未结 9 1932
忘掉有多难
忘掉有多难 2020-12-18 19:16

This is my screen, with one button hidden behind the keyboard.

I want exactly like this, but scrollable. -

Whenever, the keyboard

相关标签:
9条回答
  • 2020-12-18 19:59

    old questioned with which I struggled today, What worked for me was to remove "android:windowSoftInputMode" from manifest and activity XML and, instead of making the root scroll view, make the scroll view child of root-

        <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            xmlns:tools="http://schemas.android.com/tools"
            android:id="@+id/FrameLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            tools:context=".MyActivity"
            >
            <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@+id/my_scrollview"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                >
                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">
      <!-- your xml code here. -->
        </RelativeLayout>
        </ScrollView>
        </androidx.coordinatorlayout.widget.CoordinatorLayout>
    
    0 讨论(0)
  • 2020-12-18 20:04

    I tried your code and also I have the same issue Here

    Here I make some correction in your code and values were codes as dummy(strings, colors ect)... Code Snippet is:

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/root_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true" >
    
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center_vertical|center_horizontal"
            android:orientation="vertical"
            android:padding="10dp" >
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:orientation="vertical" >
    
                <EditText
                    android:id="@+id/et_username_or_email"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="HAI"
                    android:inputType="textEmailAddress"
                    android:singleLine="true" />
    
                <EditText
                    android:id="@+id/et_pswd"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="HH"
                    android:password="true"
                    android:singleLine="true" />
    
                <Button
                    android:id="@+id/btn_sign_in"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10dp"
                    android:background="#5465"
                    android:text="sigin"
                    android:textColor="@android:color/white" />
    
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10dp"
                    android:gravity="center_horizontal"
                    android:text="ORR"
                    android:textColor="@android:color/black" />
    
                <Button
                    android:id="@+id/btn_take_a_peek"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10dp"
                    android:background="#ff8f43"
                    android:text="sfse"
                    android:textColor="@android:color/white" />
    
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="15dp"
                    android:gravity="center_horizontal"
                    android:text="Forgot"
                    android:textColor="#ec0974" />
            </LinearLayout>
        </LinearLayout>
    
        <Button
            android:id="@+id/btn_create_account"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:background="#ffd250"
            android:text="Create Accounr"
            android:textColor="@android:color/white" />
    </RelativeLayout>
     </ScrollView>
    

    Also set the below parameter to your activity in you Manifest

    android:windowSoftInputMode="adjustPan"

    **Edited as in view outer layer is Relative layout inside a scrollview and i managed the Create Account button as parent bottom.

    Please try it in a real device.

    Try this and give your feedback !! Happy Coding..

    0 讨论(0)
  • 2020-12-18 20:07

    Add this input mode in your manifest file.

    android:windowSoftInputMode="stateHidden|adjustResize"
    
    0 讨论(0)
  • 2020-12-18 20:09

    Make the root of your view

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        ...
    
    </ScrollView>
    
    0 讨论(0)
  • 2020-12-18 20:11

    I hope it will helpful for you Already I have designed such type of layout. I did not edited your layout.

    <?xml version="1.0" encoding="utf-8"?>
     <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res/com.clearfly.groupfone"
     android:id="@+id/registration_view"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:background="@android:color/white"
     android:fillViewport="true"
     android:orientation="vertical" >
    
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/white"
        android:orientation="vertical" >
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginBottom="@dimen/activity_horizontal_margin"
            android:orientation="vertical"
            android:weightSum="1" >
    
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="0dp"
                android:layout_marginTop="40dp"
                android:layout_weight="0.4"
                android:gravity="center"
                android:orientation="vertical" >
    
                <ImageView
                    android:id="@+id/ivProfilePicture"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:src="@drawable/ic_launcher" >
                </ImageView>
            </LinearLayout>
    
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="0dp"
                android:layout_marginTop="20dp"
                android:layout_weight="0.6"
                android:orientation="vertical"
                android:weightSum="1" >
    
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:layout_marginLeft="20dp"
                    android:layout_marginRight="20dp"
                    android:layout_weight="0.2"
                    android:orientation="vertical" >
    
                    <EditText
                        android:id="@+id/firstname_edit"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:cursorVisible="true"
                        android:hint="First Name"
                        android:inputType="textCapWords|textPersonName|textNoSuggestions"
                        android:maxLength="50"
                        android:paddingLeft="40dp"
                        android:singleLine="true"
                        android:textColor="@android:color/black"
                         />
                </LinearLayout>
    
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:layout_marginLeft="20dp"
                    android:layout_marginRight="20dp"
                    android:layout_weight="0.2"
                    android:orientation="vertical" >
    
                    <EditText
                        android:id="@+id/lastname_edit"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="20dp"
                        android:cursorVisible="true"
                        android:hint="Last Name"
                        android:inputType="textCapWords|textPersonName|textNoSuggestions"
                        android:maxLength="50"
                        android:paddingLeft="40dp"
                        android:singleLine="true"
                        android:textColor="@android:color/black"
                         />
                </LinearLayout>
    
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:layout_marginLeft="20dp"
                    android:layout_marginRight="20dp"
                    android:layout_weight="0.2"
                    android:orientation="vertical" >
    
                    <EditText
                        android:id="@+id/email_edit"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="20dp"
                        android:cursorVisible="true"
                        android:hint="email"
                        android:inputType="textEmailAddress"
                        android:maxLength="255"
                        android:paddingLeft="40dp"
                        android:singleLine="true"
                        android:textColor="@android:color/black"
                         />
                </LinearLayout>
    
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:layout_marginLeft="20dp"
                    android:layout_marginRight="20dp"
                    android:layout_weight="0.2"
                    android:orientation="vertical" >
    
                    <EditText
                        android:id="@+id/password_edit"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="20dp"
                        android:cursorVisible="true"
                        android:hint="Password"
                        android:inputType="textPassword"
                        android:maxLength="20"
                        android:paddingLeft="40dp"
                        android:singleLine="true"
                        android:textColor="@android:color/black"
                        />
                </LinearLayout>
    
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:layout_marginLeft="20dp"
                    android:layout_marginRight="20dp"
                    android:layout_weight="0.2"
                    android:orientation="vertical" >
    
                    <EditText
                        android:id="@+id/verify_password_edit"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="20dp"
                        android:cursorVisible="true"
                        android:hint="Verify pwd"
                        android:inputType="textPassword"
                        android:maxLength="20"
                        android:paddingLeft="40dp"
                        android:singleLine="true"
                        android:textColor="@android:color/black"/>
                </LinearLayout>
            </LinearLayout>
        </LinearLayout>
      </LinearLayout>
    </ScrollView>
    
    0 讨论(0)
  • 2020-12-18 20:12

    I had the same Problem and solved it.

    Add this to your class inside the <activity> tags in the AndroidManifest in your Class:

    android:windowSoftInputMode="stateHidden|adjustResize">
    

    or:

    <activity
            android:name="com.app.app.RegisterScreen"
            android:parentActivityName="com.app.app.LogInScreen"
            android:windowSoftInputMode="stateHidden|adjustPan">
    
        </activity>
    

    Example:

    <activity
            android:name="com.app.yourapp.LogInScreen"
            android:windowSoftInputMode="stateHidden|adjustPan">
    
    </activity>
    

    This works for me.

    0 讨论(0)
提交回复
热议问题