相对布局 - 向下滚动

14

我有以下布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    android:id="@+navigate/RLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ABABAB"
    xmlns:android="http://schemas.android.com/apk/res/android"
    >
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:textStyle="bold"
        android:id="@+id/myid" 
        android:layout_centerHorizontal="true"
        android:src="@drawable/myid"
        android:layout_marginTop="15dp" />.
    <RelativeLayout android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_margin="10dp"
        android:orientation="vertical"
        android:id="@+id/firstRectangle"
        android:background="@drawable/bg"
        android:layout_below="@+id/myid" >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:textStyle="bold|italic"
        android:textColor="#000000"
        android:id="@+id/hotelinfos"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"
        android:layout_below="@+id/myid"
        android:layout_alignLeft="@+id/myid"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:textStyle="bold"
        android:textColor="#000000"
        android:id="@+id/hotelname"
        android:layout_below="@+id/hotelinfos"
        android:layout_alignLeft="@+id/hotelinfos" 
        android:layout_marginTop="10dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:textColor="#000000"
        android:id="@+id/hoteladdress"
        android:layout_below="@+id/hotelname"
        android:layout_alignLeft="@+id/hotelname" 
        android:layout_marginTop="10dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:id="@+id/hotelphone"
        android:layout_below="@+id/hoteladdress"
        android:layout_alignLeft="@+id/hoteladdress" 
        android:layout_marginTop="10dp"
        android:textColor="#12C"
        android:textStyle="bold|italic"
        android:onClick="onClick"
        android:clickable="true" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:textColor="#12C"
        android:onClick="onClick"
        android:clickable="true"
        android:textStyle="bold|italic"
        android:id="@+id/hotelemail"
        android:layout_below="@+id/hotelphone"
        android:layout_alignLeft="@+id/hotelphone"
        android:layout_marginTop="10dp"
        android:paddingBottom="10dp" />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/picture" 
        android:layout_below="@+id/myid"
        android:layout_alignParentRight="true"
        android:layout_marginRight="10dp"       
        android:layout_marginTop="10dp"/>
    </RelativeLayout>
    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_margin="10dp"
        android:orientation="vertical"
        android:id="@+id/SecondRectangle"
        android:background="@drawable/bg"
        android:layout_below="@+id/firstRectangle" >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:textColor="#000000"
        android:textStyle="bold|italic"
        android:id="@+id/bookinginfos"
        android:layout_below="@+id/firstRectangle"
        android:layout_alignLeft="@+id/firstRectangle"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:textColor="#000000"
        android:id="@+id/pnr"
        android:layout_below="@+id/bookinginfos"
        android:layout_alignLeft="@+id/bookinginfos" 
        android:layout_marginTop="10dp"
        android:layout_marginRight="10dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:textColor="#000000"
        android:id="@+id/segmentCode"
        android:layout_below="@+id/pnr"
        android:layout_alignLeft="@+id/pnr"
        android:layout_marginRight="10dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:textColor="#000000"
        android:id="@+id/checkin"
        android:layout_below="@+id/segmentCode"
        android:layout_alignLeft="@+id/segmentCode" 
        android:layout_marginTop="10dp"
        android:layout_marginRight="10dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:textColor="#000000"
        android:id="@+id/checkout"
        android:layout_below="@+id/checkin"
        android:layout_alignLeft="@+id/checkin" 
        android:layout_marginRight="10dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:textColor="#000000"
        android:id="@+id/nights"    
        android:layout_below="@+id/checkout"
        android:layout_alignLeft="@+id/checkout"
        android:layout_marginRight="10dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:textColor="#000000"
        android:id="@+id/roomType"
        android:layout_below="@+id/nights"
        android:layout_alignLeft="@+id/nights" 
        android:layout_marginTop="10dp"
        android:layout_marginRight="10dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:textColor="#000000"
        android:id="@+id/boardBasis"
        android:layout_below="@+id/roomType"
        android:layout_alignLeft="@+id/roomType"
        android:layout_marginRight="10dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:textColor="#000000"
        android:id="@+id/paxNames"
        android:layout_below="@+id/boardBasis"
        android:layout_alignLeft="@+id/boardBasis" 
        android:layout_marginTop="10dp"
        android:layout_marginRight="10dp"
        android:paddingBottom="10dp" />
    </RelativeLayout>
    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_margin="10dp"
        android:orientation="vertical"
        android:id="@+id/thirdRectangle"
        android:background="@drawable/bg"
        android:layout_below="@+id/SecondRectangle" >
            <ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:textColor="#000000"
        android:textStyle="bold|italic"
        android:id="@+id/forHotel"
        android:layout_below="@+id/SecondRectangle"
        android:layout_alignLeft="@+id/SecondRectangle" 
        android:layout_marginLeft="10dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:textColor="#000000"
        android:id="@+id/supplierCode"
        android:layout_below="@+id/forHotel"
        android:layout_alignLeft="@+id/forHotel"
        android:layout_marginTop="10dp"
        android:layout_marginRight="10dp"
        android:paddingBottom="10dp"/>
        </ScrollView>

    </RelativeLayout>
</RelativeLayout>

我希望能够在这个布局中滑动,因为相对布局的最后一部分不可见。 但是我不知道该怎么做。 我尝试添加一个scrollview,但是出现了错误:scrollview只能容纳一个直接子元素! 你有什么建议吗?

提前感谢你的帮助!

4个回答

42

ScrollView期望有一个单一的子视图,在你的布局中你却有2个TextView。为了让ScrollView正常工作,你需要将TextView包裹在一个像LinearLayout或者RelativeLayout这样的ViewGroup中。

编辑后的代码:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView android:layout_width="match_parent" android:layout_height="match_parent">
<RelativeLayout
    android:id="@+navigate/RLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ABABAB"
    xmlns:android="http://schemas.android.com/apk/res/android"
    >
// ... THE REST OF YOUR CODE
</RelativeLayout>
</ScrollView>

3

将这段代码放到你希望滚动条开始的位置:

<ScrollView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    >

当你想要停止它时,最终结束。

3

由于scrollview只能有一个子元素,所以子元素可以是任何类型的layout。可以是LinearLayoutRelativeLayout。因此应该像这样:

<ScrollView>
<RelativeLayout>
</RelativeLayout>
</ScrollView>

您的代码将变成这样:

<RelativeLayout
android:id="@+navigate/RLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ABABAB"
xmlns:android="http://schemas.android.com/apk/res/android"
>

<ScrollView>
android:id="@+navigate/Scrollview"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<RelativeLayout
android:id="@+navigate/RLayout02"
android:layout_width="fill_parent"
android:layout_height="fill_parent"

>
<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="10dp"
    android:textStyle="bold"
    android:id="@+id/hcorpo" 
    android:layout_centerHorizontal="true"
    android:src="@drawable/hcorpo"
    android:layout_marginTop="15dp" />.
<RelativeLayout android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_margin="10dp"
    android:orientation="vertical"
    android:id="@+id/firstRectangle"
    android:background="@drawable/bg"
    android:layout_below="@+id/hcorpo" >
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="10dp"
    android:textStyle="bold|italic"
    android:textColor="#000000"
    android:id="@+id/hotelinfos"
    android:layout_marginTop="10dp"
    android:layout_marginLeft="10dp"
    android:layout_below="@+id/hcorpo"
    android:layout_alignLeft="@+id/hcorpo"/>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="10dp"
    android:textStyle="bold"
    android:textColor="#000000"
    android:id="@+id/hotelname"
    android:layout_below="@+id/hotelinfos"
    android:layout_alignLeft="@+id/hotelinfos" 
    android:layout_marginTop="10dp" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="10dp"
    android:textColor="#000000"
    android:id="@+id/hoteladdress"
    android:layout_below="@+id/hotelname"
    android:layout_alignLeft="@+id/hotelname" 
    android:layout_marginTop="10dp" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="10dp"
    android:id="@+id/hotelphone"
    android:layout_below="@+id/hoteladdress"
    android:layout_alignLeft="@+id/hoteladdress" 
    android:layout_marginTop="10dp"
    android:textColor="#12C"
    android:textStyle="bold|italic"
    android:onClick="onClick"
    android:clickable="true" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="10dp"
    android:textColor="#12C"
    android:onClick="onClick"
    android:clickable="true"
    android:textStyle="bold|italic"
    android:id="@+id/hotelemail"
    android:layout_below="@+id/hotelphone"
    android:layout_alignLeft="@+id/hotelphone"
    android:layout_marginTop="10dp"
    android:paddingBottom="10dp" />
<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/picture" 
    android:layout_below="@+id/hcorpo"
    android:layout_alignParentRight="true"
    android:layout_marginRight="10dp"       
    android:layout_marginTop="10dp"/>
</RelativeLayout>
<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_margin="10dp"
    android:orientation="vertical"
    android:id="@+id/SecondRectangle"
    android:background="@drawable/bg"
    android:layout_below="@+id/firstRectangle" >
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="10dp"
    android:textColor="#000000"
    android:textStyle="bold|italic"
    android:id="@+id/bookinginfos"
    android:layout_below="@+id/firstRectangle"
    android:layout_alignLeft="@+id/firstRectangle"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="10dp" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="10dp"
    android:textColor="#000000"
    android:id="@+id/pnr"
    android:layout_below="@+id/bookinginfos"
    android:layout_alignLeft="@+id/bookinginfos" 
    android:layout_marginTop="10dp"
    android:layout_marginRight="10dp" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="10dp"
    android:textColor="#000000"
    android:id="@+id/segmentCode"
    android:layout_below="@+id/pnr"
    android:layout_alignLeft="@+id/pnr"
    android:layout_marginRight="10dp" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="10dp"
    android:textColor="#000000"
    android:id="@+id/checkin"
    android:layout_below="@+id/segmentCode"
    android:layout_alignLeft="@+id/segmentCode" 
    android:layout_marginTop="10dp"
    android:layout_marginRight="10dp" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="10dp"
    android:textColor="#000000"
    android:id="@+id/checkout"
    android:layout_below="@+id/checkin"
    android:layout_alignLeft="@+id/checkin" 
    android:layout_marginRight="10dp" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="10dp"
    android:textColor="#000000"
    android:id="@+id/nights"    
    android:layout_below="@+id/checkout"
    android:layout_alignLeft="@+id/checkout"
    android:layout_marginRight="10dp" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="10dp"
    android:textColor="#000000"
    android:id="@+id/roomType"
    android:layout_below="@+id/nights"
    android:layout_alignLeft="@+id/nights" 
    android:layout_marginTop="10dp"
    android:layout_marginRight="10dp" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="10dp"
    android:textColor="#000000"
    android:id="@+id/boardBasis"
    android:layout_below="@+id/roomType"
    android:layout_alignLeft="@+id/roomType"
    android:layout_marginRight="10dp" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="10dp"
    android:textColor="#000000"
    android:id="@+id/paxNames"
    android:layout_below="@+id/boardBasis"
    android:layout_alignLeft="@+id/boardBasis" 
    android:layout_marginTop="10dp"
    android:layout_marginRight="10dp"
    android:paddingBottom="10dp" />
</RelativeLayout>
<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_margin="10dp"
    android:orientation="vertical"
    android:id="@+id/thirdRectangle"
    android:background="@drawable/bg"
    android:layout_below="@+id/SecondRectangle" >

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="10dp"
    android:textColor="#000000"
    android:textStyle="bold|italic"
    android:id="@+id/forHotel"
    android:layout_below="@+id/SecondRectangle"
    android:layout_alignLeft="@+id/SecondRectangle" 
    android:layout_marginLeft="10dp" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="10dp"
    android:textColor="#000000"
    android:id="@+id/supplierCode"
    android:layout_below="@+id/forHotel"
    android:layout_alignLeft="@+id/forHotel"
    android:layout_marginTop="10dp"
    android:layout_marginRight="10dp"
    android:paddingBottom="10dp"/>


</RelativeLayout>
</RelativeLayout>

</ScrollView>

</RelativeLayout>

3
你的最后一个 RelativeLayout
 <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_margin="10dp"
        android:orientation="vertical"
        android:id="@+id/thirdRectangle"
        android:background="@drawable/bg"
        android:layout_below="@+id/SecondRectangle" >
            <ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:textColor="#000000"
        android:textStyle="bold|italic"
        android:id="@+id/forHotel"
        android:layout_below="@+id/SecondRectangle"
        android:layout_alignLeft="@+id/SecondRectangle" 
        android:layout_marginLeft="10dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:textColor="#000000"
        android:id="@+id/supplierCode"
        android:layout_below="@+id/forHotel"
        android:layout_alignLeft="@+id/forHotel"
        android:layout_marginTop="10dp"
        android:layout_marginRight="10dp"
        android:paddingBottom="10dp"/>
        </ScrollView>

    </RelativeLayout>

应该像这样:

而不是这样:

<ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content">
 <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_margin="10dp"
        android:orientation="vertical"
        android:id="@+id/thirdRectangle"
        android:background="@drawable/bg"
        android:layout_below="@+id/SecondRectangle" >


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:textColor="#000000"
        android:textStyle="bold|italic"
        android:id="@+id/forHotel"
        android:layout_below="@+id/SecondRectangle"
        android:layout_alignLeft="@+id/SecondRectangle" 
        android:layout_marginLeft="10dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:textColor="#000000"
        android:id="@+id/supplierCode"
        android:layout_below="@+id/forHotel"
        android:layout_alignLeft="@+id/forHotel"
        android:layout_marginTop="10dp"
        android:layout_marginRight="10dp"
        android:paddingBottom="10dp"/>

    </RelativeLayout>
 </ScrollView>

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