【问题标题】:RelativeLayout with two-dimensional scroll具有二维滚动的RelativeLayout
【发布时间】:2012-01-30 07:22:53
【问题描述】:

我正在尝试使用许多小部件创建 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>

我的活动是这样的:

一切正常,该活动垂直滚动。

但后来我尝试像这样添加 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>

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

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

【问题讨论】:

    标签: android scrollview android-relativelayout horizontalscrollview


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      • 2017-05-30
      相关资源
      最近更新 更多