Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
689 views
in Technique[技术] by (71.8m points)

android - How to scroll an EditText to the very top of the layout?

So I have this layout with some ChipsInput inside a scrollview and I simply want these to go to the very top when the keyboard is activated

I've tried to change windowSoftInputMode to adjustPan and others but it does not make it to go to the very top, just doesn't cover it.

Here's my xml layout

<LinearLayout 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/constraintLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background1"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="vertical">

<LinearLayout
    android:id="@+id/layoutImage"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="10dp"
    android:background="@color/colorPrimary"
    android:elevation="12dp"
    android:orientation="horizontal"
    android:padding="10dp"
    tools:targetApi="lollipop">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:layout_margin="3dp"
        android:layout_weight="1"
        android:fontFamily="@font/quattrocento"
        android:gravity="left"
        android:text="@string/profile"
        android:textSize="20sp"
        android:textStyle="bold"
        android:textColor="@color/textColor1"
        tools:ignore="RtlHardcoded" />

    <ImageButton
        android:id="@+id/btUpdate"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="3"
        android:background="@color/colorPrimary"
        android:src="@drawable/arrow_right_icon" />

</LinearLayout>

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="5dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginHorizontal="5dp"
        android:orientation="vertical"
        tools:targetApi="o">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:fontFamily="@font/quattrocento"
            android:gravity="center"
            android:text="@string/gallery"
            android:textSize="22sp"
            android:textStyle="bold"
            android:textColor="@color/textColor2"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:orientation="horizontal"
            android:padding="5dp"
            android:baselineAligned="false">

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1">

                <ImageButton
                    android:id="@+id/close1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/icon_close"
                    android:background="@color/white"
                    android:layout_alignParentTop="true"
                    android:layout_alignParentEnd="true"
                    android:layout_alignParentRight="true"
                    android:elevation="7dp"
                    android:visibility="invisible"/>

                <ImageButton
                    android:id="@+id/add1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/icon_add"
                    android:background="@color/white"
                    android:layout_alignParentBottom="true"
                    android:layout_alignParentEnd="true"
                    android:layout_alignParentRight="true"
                    android:elevation="7dp"/>

                <ImageView
                    android:id="@+id/photo1"
                    android:layout_width="match_parent"
                    android:layout_height="115dp"
                    android:layout_marginHorizontal="5dp"
                    android:background="@drawable/rounded_rect_primary_dark"
                    android:elevation="5dp"
                    android:scaleType="fitXY"/>
            </RelativeLayout>

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1">

                <ImageButton
                    android:id="@+id/close2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/icon_close"
                    android:background="@color/white"
                    android:layout_alignParentTop="true"
                    android:layout_alignParentEnd="true"
                    android:layout_alignParentRight="true"
                    android:elevation="7dp"
                    android:visibility="invisible"/>

                <ImageButton
                    android:id="@+id/add2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/icon_add"
                    android:background="@color/white"
                    android:layout_alignParentBottom="true"
                    android:layout_alignParentEnd="true"
                    android:layout_alignParentRight="true"
                    android:elevation="7dp"/>

                <ImageView
                    android:id="@+id/photo2"
                    android:layout_width="match_parent"
                    android:layout_height="115dp"
                    android:layout_marginHorizontal="5dp"
                    android:background="@drawable/rounded_rect_primary_dark"
                    android:elevation="5dp"
                    android:scaleType="fitXY" />
            </RelativeLayout>

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1">

                <ImageButton
                    android:id="@+id/close3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/icon_close"
                    android:background="@color/white"
                    android:layout_alignParentTop="true"
                    android:layout_alignParentEnd="true"
                    android:layout_alignParentRight="true"
                    android:elevation="7dp"
                    android:visibility="invisible"/>

                <ImageButton
                    android:id="@+id/add3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/icon_add"
                    android:background="@color/white"
                    android:layout_alignParentBottom="true"
                    android:layout_alignParentEnd="true"
                    android:layout_alignParentRight="true"
                    android:elevation="7dp"/>

                <ImageView
                    android:id="@+id/photo3"
                    android:layout_width="match_parent"
                    android:layout_height="115dp"
                    android:layout_marginHorizontal="5dp"
                    android:background="@drawable/rounded_rect_primary_dark"
                    android:elevation="5dp"
                    android:scaleType="fitXY"/>
            </RelativeLayout>

        </LinearLayout>

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:layout_marginHorizontal="12dp"
            android:layout_marginVertical="5dp"
            android:background="@color/black" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_marginLeft="10dp"
            android:layout_marginStart="10dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:fontFamily="@font/quattrocento"
                android:text="@string/about_me"
                android:textColor="@color/textColor2"
                android:textSize="20sp" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:background="@color/white">

                <EditText
                    android:id="@+id/description"
                    android:layout_width="match_parent"
                    android:layout_height="70dp"
                    android:background="@color/white"
                    android:focusable="true"
                    android:maxLength="500"
                    android:inputType="text"
                    android:importantForAutofill="no"
                    android:autofillHints="no"
                    tools:ignore="LabelFor" />

                <TextView
                    android:id="@+id/caracCounter"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:fontFamily="@font/quattrocento"
                    android:text="500"
                    android:textColor="@color/black"
                    android:textSize="16sp"
                    android:layout_gravity="end" />
            </LinearLayout>
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_gravity="center"
            android:gravity="center"
            android:layout_marginLeft="10dp"
            android:layout_marginStart="10dp"
            android:layout_marginTop="10dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:fontFamily="@font/quattrocento"
                android:text="@string/interest1"
                android:textColor="@color/textColor2"
                android:textSize="20sp"
                android:layout_gravity="center"
                android:gravity="center"/>

            <Spinner
                android:id="@+id/categories1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:gravity="center"
                android:background="@color/colorPrimary" />
        </LinearLayout>

        <com.pchmn.materialchips.ChipsInput
            android:id="@+id/chipsInput1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
        

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You can use CoordinatorLayout as your root and NestedScrolView in it .

CoordinatorLayout as root reacts to keyboard and scrolls your layout to the top of your phone with assistant of NestedScrollView which your NestedScrollView includes your layout code .

To put the issue into perspective view

CoordinaterLayout > NestedScrolView > yourLayout

Change your layout XMl like code below

<android.support.design.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:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <LinearLayout
            android:id="@+id/constraintLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/background1"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:orientation="vertical">
        <!-- rest of your layout xml code-->

    </android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...