Oleksandr Firsov
Oleksandr Firsov

Reputation: 1478

ScrollView contents move up

I'm using a ScrollView. Although I had worked with it before, I suddenly encountered a problem. At some point contents start to go up.

In my AndroidStudio .xml file everything looks fine:

enter image description here

But on my device I get this:

enter image description here

As you can see "The notes go here" text moved up. I pressed the button, part of it is cut off.

My .xml code looks like this:

<?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="wrap_content" >

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/mainLayout">

....

    </RelativeLayout>
</ScrollView>

And my activity:

public class ProfileInfo extends Activity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.profile_info);


    }

}

[UPDATE]

    <?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scroll"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/mainLayout">


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Profile"
            android:id="@+id/ProfHead"
            android:layout_alignParentTop="true"
            android:layout_marginTop="20dp"
            android:layout_centerHorizontal="true"
            />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:scaleType="fitCenter"
            android:id="@+id/imageProfile"
            android:src="@drawable/profile_icon"
            android:layout_marginTop="20dp"
            android:layout_marginBottom="20dp"
            android:layout_above="@+id/contactsBtn"
            android:layout_below="@+id/ProfHead" />



        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Home Phone a"
            android:id="@+id/anchor1"
            android:visibility="invisible"
            android:layout_alignLeft="@+id/nameHead"
            android:layout_alignStart="@+id/nameHead" />


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Name"
            android:id="@+id/nameHead"
            android:layout_below="@+id/patProfHead"
            android:layout_marginTop="200dp"
            android:layout_marginLeft="20dp"
            android:layout_alignParentLeft="true"/>


        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Contacts >"
            android:id="@+id/contactsBtn"
            android:layout_above="@+id/editName"
            android:layout_toRightOf="@id/anchor1"/>


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="20dp"
            android:id="@+id/editName"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_below="@+id/nameHead"
            android:layout_marginLeft="20dp"
            android:layout_alignParentLeft="true"
            android:text="Name"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Surname"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_marginRight="20dp"
            android:id="@+id/editSurname"
            android:layout_below="@+id/nameHead"
            android:layout_toRightOf="@id/editName"/>



        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Sex"
            android:id="@+id/sexHead"
            android:layout_marginTop="10dp"
            android:layout_below="@id/editName"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="20dp"

            />


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/anchor1"
            android:text="Sex"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_alignBottom="@id/sexHead"
            android:id="@+id/radioGroup">

        </TextView>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Age"
            android:id="@+id/ageHead"
            android:layout_below="@id/sexHead"
            android:layout_marginTop="10dp"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="20dp"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="20dp"
            android:text="Age"
            android:id="@+id/editAge"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_toRightOf="@id/anchor1"
            android:layout_alignBaseline="@id/ageHead"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="DOB"
            android:id="@+id/dobHead"
            android:layout_below="@id/ageHead"
            android:layout_marginTop="10dp"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="20dp"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="20dp"
            android:text="DOB"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:id="@+id/editDob"
            android:layout_toRightOf="@id/anchor1"
            android:layout_alignBaseline="@id/dobHead"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Height"
            android:id="@+id/heightHead"
            android:layout_below="@id/dobHead"
            android:layout_marginTop="10dp"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="20dp"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="20dp"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Height"
            android:id="@+id/editHeight"
            android:layout_toRightOf="@id/anchor1"
            android:layout_alignBaseline="@id/heightHead"/>


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Weight"
            android:id="@+id/weightHead"
            android:layout_below="@id/heightHead"
            android:layout_marginTop="10dp"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="20dp"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Weight"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:id="@+id/editWeight"
            android:layout_toRightOf="@id/anchor1"
                android:layout_marginRight="20dp"
                android:layout_alignBaseline="@id/weightHead"/>


            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="Notes"
                android:id="@+id/notesHead"
                android:layout_below="@id/weightHead"
                android:layout_marginTop="10dp"
                android:layout_alignParentLeft="true"
                android:layout_marginLeft="20dp"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Template >"
        android:id="@+id/notesBtn"
        android:layout_alignBaseline="@id/notesHead"
        android:layout_toRightOf="@id/anchor1"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:id="@+id/editNotes"
        android:layout_below="@+id/notesBtn"
        android:layout_marginLeft="20dp"
        android:text="The notes go here"
        android:layout_marginRight="20dp"
        android:layout_alignParentLeft="true" />

    </RelativeLayout>
</ScrollView>

Upvotes: 0

Views: 119

Answers (3)

Nazmus Sakib
Nazmus Sakib

Reputation: 21

This can be almost what you want. You can customize it a little to achieve what you want.

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scroll"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="Profile"
                android:id="@+id/ProfHead"
                android:layout_marginTop="20dp"
                />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center">
           <ImageView
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:scaleType="fitCenter"
                android:id="@+id/imageProfile"
                android:src="@drawable/profile_icon"
                android:layout_marginTop="20dp"
                android:layout_marginBottom="20dp" />
        </LinearLayout>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Contacts >"
            android:id="@+id/contactsBtn"
            android:layout_gravity="center"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Home Phone a"
            android:id="@+id/anchor1"
            android:visibility="invisible"
            android:layout_alignLeft="@+id/nameHead"
            android:layout_alignStart="@+id/nameHead" />


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Name"
            android:id="@+id/nameHead"
            android:layout_marginLeft="20dp"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="20dp"
                android:id="@+id/editName"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:layout_marginLeft="20dp"
                android:text="Name"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Surname"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:layout_marginRight="20dp"
                android:id="@+id/editSurname"/>

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="Sex"
                android:layout_marginRight="20dp"
                android:id="@+id/sexHead"
                android:layout_marginTop="10dp"
                android:layout_marginLeft="20dp"

                />


            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Sex"
                android:layout_marginTop="10dp"
                android:layout_marginLeft="20dp"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:id="@+id/radioGroup">

            </TextView>

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="Age"
                android:id="@+id/ageHead"
                android:layout_marginTop="10dp"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:layout_marginLeft="20dp"
                android:text="Age"
                android:id="@+id/editAge"
                android:textAppearance="?android:attr/textAppearanceMedium"/>
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="DOB"
                android:id="@+id/dobHead"
                android:layout_marginTop="10dp"
                android:layout_marginRight="20dp"
                android:layout_marginLeft="20dp"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:layout_marginLeft="20dp"
                android:text="DOB"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:id="@+id/editDob"/>
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="Height"
                android:id="@+id/heightHead"
                android:layout_marginTop="10dp"
                android:layout_marginRight="20dp"
                android:layout_marginLeft="20dp"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="Height"
                android:id="@+id/editHeight"/>
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="Weight"
                android:id="@+id/weightHead"
                android:layout_marginTop="10dp"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Weight"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:id="@+id/editWeight"
                android:layout_marginTop="10dp" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="Notes"
                android:id="@+id/notesHead"
                android:layout_marginLeft="20dp"/>

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Template >"
                android:layout_marginLeft="20dp"
                android:id="@+id/notesBtn"/>

        </LinearLayout>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:id="@+id/editNotes"
            android:layout_marginLeft="20dp"
            android:text="The notes go here"
            android:layout_marginRight="20dp"/>

    </LinearLayout>
</ScrollView>

Upvotes: 1

Nazmus Sakib
Nazmus Sakib

Reputation: 21

use linear layout vertical first. then in each line use linear layout horizontal.

<?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="wrap_content" >

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:app="http://schemas.android.com/apk/res-auto"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:orientation="vertical"
       android:id="@+id/mainLayout">

       <LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:app="http://schemas.android.com/apk/res-auto"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:orientation="horizontal"
          android:id="@+id/mainLayout">
          //here put your code for each line.
       </LinearLayout>
        //then again use a linear layout horizontal for next line
        .
        .
        .
        .
    </LinearLayout>
</ScrollView>

Upvotes: 1

TacoEater
TacoEater

Reputation: 2278

Issue 1: Your view inside the ScrollView should not have height match parent. That defeats the purpose of the ScrollView. the view has it's own size and the scroll contains it (typically the inner view is larger and the ScrollView scrolls it). Try to use wrap content instead.

Issue 2: Your ScrollView has height="wrap_content". This is a mistake, the ScrollView does not adjust its height according to the content. try to either give it explicit height or give it a height="match_parent".

Issue 3: what you see as your text on top of other content is a result of using RelativeLayout. in RelativeLayout the views are laid on top of each-other relative to the top/bottom/left/right of the parent. If you don't want them to overlap, use a LinearLayout instead of RelativeLayout or use a LinearLayout with multiple children inside of your RelativeLayout.

<?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" >
    <LinearLayout  
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/mainLayout">
    </LinearLayout>
</ScrollView>

Upvotes: 0

Related Questions