相对布局可滚动

13

我尝试了很多次将我的RelativeLayout中的元素对齐,但我没有得到我期望的结果,即:

enter image description here

我想将第一个按钮与顶部右侧对齐,然后我有多个TextView,并且我希望它们所有都可以滚动,但是当我插入<ScrollView>标签时,会出现错误。这是我的代码:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/RL01"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical"
  android:padding="5dp">

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

    <Button
          android:id="@+id/btnBrowser"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Browser"
          android:layout_marginTop="5dp"
            >
    </Button>

        <TextView
        android:id="@+id/txtAuthor"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:textStyle="bold"
        android:textColor="#143781"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="20dp"
        android:layout_below="@+id/btnBrowser"
        >
    </TextView>
    <TextView
        android:id="@+id/txtDate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="14dp"
        android:textColor="#8D89B3"
        android:layout_marginTop="5dp"
        android:layout_marginLeft="20dp"
        android:layout_below="@+id/txtAuthor">
    </TextView>
    <TextView
        android:id="@+id/txtTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="14dp"
        android:textStyle="bold"
        android:textColor="#000000"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="5dp"
        android:layout_below="@+id/txtDate">
        >
    </TextView>
    <TextView
        android:id="@+id/txtMsg"
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content"
        android:textSize="14dp"
        android:textColor="#000000"
        android:layout_marginLeft="20dp"
        android:layout_below="@+id/txtTitle">
    </TextView>

    <Button
          android:id="@+id/btnReply"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Reply"
          android:layout_marginTop="20dp"
          android:layout_below="@+id/txtMsg"
          android:layout_centerInParent="@+id/txtMsg">

    </Button>
       </ScrollView>
</RelativeLayout>
3个回答

24

ScrollView不允许有超过一个直接子元素,这就是你遇到错误的原因。所以你可以尝试以下方法:

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

<RelativeLayout
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
         <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="Button" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/button1"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView1"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView2"
        android:text="TextView" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/textView3"
        android:text="Button" />

     </RelativeLayout>
</ScrollView>

1

在ScrollView中不能放置多个小部件。为此,您必须使用视图包装您的小部件,如下所示:

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

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
        <Button
            android:id="@+id/btnBrowser"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="false"
            android:layout_marginTop="5dp"
            android:text="Browser" >

        </Button>


        <TextView
            android:id="@+id/txtAuthor"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/btnBrowser"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="10dp"
            android:text="Text"
            android:textColor="#143781"
            android:textSize="20dp"
            android:textStyle="bold" >
        </TextView>

        <TextView
            android:id="@+id/txtDate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/txtAuthor"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="5dp"
            android:textColor="#8D89B3"
            android:textSize="14dp" android:text="Text"
            >
        </TextView>

        <TextView
            android:id="@+id/txtTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/txtDate"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="5dp"
            android:textColor="#000000"
            android:textSize="14dp"
            android:textStyle="bold" android:text="Text">
        </TextView>

        <TextView
            android:id="@+id/txtMsg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/txtTitle"
            android:layout_marginLeft="20dp"
            android:textColor="#000000"
            android:textSize="14dp" android:text="Text">
        </TextView>

        <Button
            android:id="@+id/btnReply"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/txtMsg"
            android:layout_centerInParent="@+id/txtMsg"
            android:layout_marginTop="20dp"
            android:text="Reply" >
        </Button>
    </RelativeLayout>
</ScrollView>


1
你正在将 scrollview 添加到 relativelayout 中。你必须将 Relativelayout 添加到 scrollview 中才能得到结果。还有一件事,scrollview 一次只能包含一个子元素,因此将 relativelayout 添加到 scrollview 中并查看差异。

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