将滚动视图添加到安卓布局

10

我有一个相对布局,想要添加一个ScrollView,但是问题在于每当我添加ScrollView时,所有相对位置的小部件都会失去它们的位置。我已经尝试了各种可能性,但是无法正确设置ScrollView,有人可以帮助我吗?我想将ScrollView放置在XML文件的所有元素中。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff" >

    <ImageButton
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="140dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_weight="0.9"
        android:background="@drawable/subscribe_second_top"
        android:orientation="vertical" >
    </ImageButton>





            <EditText
                android:id="@+id/editText1"
                android:layout_width="270dp"
                android:layout_height="wrap_content"
                android:layout_below="@+id/bebasNeueTextView1"
                android:layout_centerHorizontal="true"
                android:ems="10"
                android:inputType="textEmailAddress" />

            <TextView
                android:id="@+id/bebasNeueTextView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/editText1"
                android:layout_centerHorizontal="true"
                android:text="THE EMAIL YOU WILL USE TO GET ALL YOUR APPS CREATED BY THE SOFT"
                android:textColor="#000000"
                android:textSize="7sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/bebasNeueTextView6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/editText2"
                android:layout_centerHorizontal="true"
                android:text="YOUR GOOGLE PLAY STORE ORDER NUMBER, IN ORDER TO PROVE YOU BOUG"
                android:textColor="#000000"
                android:textSize="7sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/bebasNeueTextView4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/bebasNeueTextView2"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="16dp"
                android:text="ENTER YOUR PLAY STORE ORDER NUMBER"
                android:textColor="#94c23e"
                android:textSize="13sp"
                android:textStyle="bold" />

            <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="80dp"
                android:layout_alignParentBottom="true"
                android:background="@drawable/subscribe_second_bottom"
                android:paddingBottom="5dp"
                android:paddingTop="30dp" >

                <com.apkcreator.fwd.BebasNeueButton
                    android:id="@+id/finishButton"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentBottom="true"
                    android:layout_centerHorizontal="true"
                    android:background="#94c23e"
                    android:paddingBottom="10dp"
                    android:paddingLeft="30dp"
                    android:paddingRight="30dp"
                    android:paddingTop="10dp"
                    android:text="FINISH"
                    android:textSize="18sp"
                    android:textStyle="bold" />
            </RelativeLayout>

            <TextView
                android:id="@+id/bebasNeueTextView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="170dp"
                android:text="ENTER YOUR EMAIL"
                android:textColor="#94c23e"
                android:textSize="13sp"
                android:textStyle="bold" />

            <EditText
                android:id="@+id/editText2"
                android:layout_width="270dp"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/editText1"
                android:layout_below="@+id/bebasNeueTextView4"
                android:ems="10" 
                android:layout_centerHorizontal="true">


            </EditText>

</RelativeLayout>
 </ScrollView>

你想在哪里插入你的滚动视图? - RussVirtuoso
将滚动视图放置在相对布局之上,然后粘贴XML代码。 - Praveen Sharma
简单来说,将一个ScrollView作为你的父级布局。 - Hussain Akhtar Wahid 'Ghouri'
没用的,我已经将滚动视图设置为父布局,但仍未起作用。 - Hassaan Rabbani
1
我现在已经编辑了我的代码,我已经将滚动视图添加到其中,问题是紧随滚动视图之后的相对布局没有得到与填充父级相等的高度。 - Hassaan Rabbani
@HassaanRabbani 你有解决方案吗? - Harshid
6个回答

8

请查看此链接:如何在Relative Layout中添加滚动条?

你的问题可能与视口有关,使用android:fillViewport="true"可以解决ScrollLayout中的问题。

查看你的xml,你可以使用一个垂直LinearLayout来设置这个文件,对于这种情况更加简单。

顺便说一下,我的建议是避免在用户输入(如注册、登录)时使用滚动条...你的表格只包含两个字段,我相信你可以将它们排列在同一个屏幕上显示(更好的用户体验!)。


请标记我的问题为有用,这将帮助许多人。 - Hassaan Rabbani

6

只需将您的XML代码开头更改为:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent" 
     android:fillViewport="true">

     <RelativeLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:background="#ffffff" >

3
这是因为在ScrollView中将RelativeLayout的高度设置为match_parent没有意义。尝试使用ScrollView的fillViewport属性。将此行添加到您的ScrollView元素中:
android:fillViewport="true"

我自己没有尝试过。也许它会对你有所帮助。更多信息请查看官方文档这里


1
<LinearLayout>
  <ScrollView>
    <RelativeLayout>
      <put your all UI component here />
    </RelativeLayout>
  </ScrollView>
</LinearLayout>

不行,我已经编辑了我的代码并尝试添加滚动视图,但是我的相对布局的高度没有设置为填充父级。 - Hassaan Rabbani
你是否使用ScrollView作为根组件? - RRTW
在我完全相同的情况下,我总是将LinearLayout作为根布局,然后添加一个高度为wrap_content的ScrollView和一个高度为wrap_content的RelativeLayout。不确定这是否能帮到你,供参考...... - RRTW
让我尝试一些不同的方法,顺便感谢你的帮助,伙计。 - Hassaan Rabbani

0

使用set元素

androd:margintTop="+5dp\-5dp"

means + or - value on all side as required

意思是根据需要在所有方向上加减值


-1
请看下面的代码,这可能会有所帮助。您可以根据需要重新排列项目,在使用任何项目的属性之前,请先阅读它。
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#ffffff" >

    <ImageButton
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="140dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="5dp"
        android:layout_weight="0.9"
        android:background="@drawable/ic_launcher"
        android:orientation="vertical" >
    </ImageButton>

    <EditText
        android:id="@+id/editText1"
        android:layout_width="270dp"
        android:layout_height="wrap_content"
        android:layout_below="@+id/linearLayout1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="5dp"
        android:ems="10"
        android:inputType="textEmailAddress" />

    <TextView
        android:id="@+id/bebasNeueTextView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/editText1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="5dp"
        android:text="THE EMAIL YOU WILL USE TO GET ALL YOUR APPS CREATED BY THE SOFT"
        android:textColor="#000000"
        android:textSize="7sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/bebasNeueTextView6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/bebasNeueTextView2"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="5dp"
        android:text="YOUR GOOGLE PLAY STORE ORDER NUMBER, IN ORDER TO PROVE YOU BOUG"
        android:textColor="#000000"
        android:textSize="7sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/bebasNeueTextView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/bebasNeueTextView6"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="5dp"
        android:text="ENTER YOUR PLAY STORE ORDER NUMBER"
        android:textColor="#94c23e"
        android:textSize="13sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/bebasNeueTextView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/bebasNeueTextView4"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="5dp"
        android:text="ENTER YOUR EMAIL"
        android:textColor="#94c23e"
        android:textSize="13sp"
        android:textStyle="bold" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="270dp"
        android:layout_height="wrap_content"
        android:layout_below="@+id/bebasNeueTextView1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="5dp"
        android:ems="10" >
    </EditText>

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="80dp"
        android:layout_alignParentBottom="true"
        android:layout_below="@+id/editText2"
        android:layout_marginTop="5dp"
        android:paddingBottom="5dp" >

        <com.apkcreator.fwd.BebasNeueButton
            android:id="@+id/finishButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:background="#94c23e"
            android:paddingBottom="10dp"
            android:paddingLeft="30dp"
            android:paddingRight="30dp"
            android:paddingTop="10dp"
            android:text="FINISH"
            android:textSize="18sp"
            android:textStyle="bold" />
    </RelativeLayout>
</RelativeLayout>

</ScrollView>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接