RelativeLayout具有二维滚动

时间:2012-01-30 07:22:54

标签: android scrollview relativelayout horizontalscrollview

我正在尝试使用许多小部件创建RelativeLayout,我希望能够垂直和水平滚动它。 起初,我使它只能垂直滚动xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:orientation="vertical" >

<ScrollView
    android:id="@+id/layoutPostWriteScrollView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:fillViewport="true" 
    android:fitsSystemWindows="true">

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="fill_horizontal"
            android:layout_marginRight="5dp"
            android:fitsSystemWindows="true"
            android:gravity="center" >

            <TextView
                android:id="@+id/layoutPostWriteCtrlLabelTheme"
                style="@style/News.Caption"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Тема" />

            <EditText
                android:id="@+id/layoutPostWriteCtrlTheme"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/layoutPostWriteCtrlLabelTheme"
                android:inputType="text" />             

            <LinearLayout
                android:id="@+id/layoutPostWriteEmbeddedMediaLayout"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/layoutPostWriteCtrlTheme"
                android:gravity="left"
                android:orientation="vertical" />

            <Button
                android:id="@+id/layoutPostWriteAddMediaButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/layoutPostWriteEmbeddedMediaLayout"
                android:onClick="onAddMediaClick"
                android:text="+ Добавить медиафайл" />

           <TextView
                android:id="@+id/layoutPostWriteCtrlLabelContent"
                style="@style/News.Caption"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/layoutPostWriteAddMediaButton"
                android:text="Содержание" />

            <EditText
                android:id="@+id/layoutPostWriteCtrlContent"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/layoutPostWriteCtrlLabelContent"
                android:gravity="top"
                android:inputType="textMultiLine"
                android:lines="10"
                android:scrollbars="vertical"
                android:singleLine="false" />

            <Button
                android:id="@+id/layoutPostWriteCtrlSave"
                android:layout_width="200dp"
                android:layout_height="40dp"
                android:layout_alignParentRight="true"
                android:layout_below="@id/layoutPostWriteCtrlContent"
                android:background="@drawable/btn_save"
                android:onClick="onClickSendPost" />
        </RelativeLayout>
</ScrollView>

我的活动如下:

Activity

一切都很好,而且活动垂直滚动。

但后来我尝试添加horizo​​ntalScrollView:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:orientation="vertical" >

<ScrollView
    android:id="@+id/layoutPostWriteScrollView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"

    android:fillViewport="true" 
    android:fitsSystemWindows="true">

    <HorizontalScrollView
        android:id="@+id/layoutPostWriteHScrollView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="fill"
        android:fillViewport="true"
        android:fitsSystemWindows="true" >

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="fill_horizontal"
            android:layout_marginRight="5dp"
            android:fitsSystemWindows="true"
            android:gravity="center" >

            <TextView
                android:id="@+id/layoutPostWriteCtrlLabelTheme"
                style="@style/News.Caption"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Тема" />

            <EditText
                android:id="@+id/layoutPostWriteCtrlTheme"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/layoutPostWriteCtrlLabelTheme"
                android:inputType="text" />

            <LinearLayout
                android:id="@+id/layoutPostWriteEmbeddedMediaLayout"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/layoutPostWriteCtrlTheme"
                android:gravity="left"
                android:orientation="vertical" />

            <Button
                android:id="@+id/layoutPostWriteAddMediaButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/layoutPostWriteEmbeddedMediaLayout"
                android:onClick="onAddMediaClick"
                android:text="+ Добавить медиафайл" />


            <TextView
                android:id="@+id/layoutPostWriteCtrlLabelContent"
                style="@style/News.Caption"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/layoutPostWriteAddMediaButton"
                android:text="Содержание" />

            <EditText
                android:id="@+id/layoutPostWriteCtrlContent"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/layoutPostWriteCtrlLabelContent"
                android:gravity="top"
                android:inputType="textMultiLine"
                android:lines="10"
                android:scrollbars="vertical"
                android:singleLine="false" />

            <Button
                android:id="@+id/layoutPostWriteCtrlSave"
                android:layout_width="200dp"
                android:layout_height="40dp"
                android:layout_alignParentRight="true"
                android:layout_below="@id/layoutPostWriteCtrlContent"
                android:background="@drawable/btn_save"
                android:onClick="onClickSendPost" />
        </RelativeLayout>
    </HorizontalScrollView>
</ScrollView>

标记中没有错误,但活动现在看起来像这样: Activity

所有EditTexts和整个RelativeLayout都缩小了。如何使活动看起来像第一张图像,但滚动垂直和水平?我尝试了很多layout_width和layout_height的组合,但它似乎不起作用。

1 个答案:

答案 0 :(得分:0)

也许它会对你有所帮助,有一个Link描述了如何使用ScrollView和HorizntalScrollView进行二维滚动。