RelativeLayout с двухмерной прокруткой - PullRequest
0 голосов
/ 30 января 2012

Я пытаюсь создать 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

Все в порядке, и эта активность прокручивается вертикально.

Но потом я попытался добавить HorizontalScrollView так:

<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 голосов
/ 22 августа 2012

может быть, это будет полезно для вас, есть ссылка , которая описывает, как сделать двухмерную прокрутку с помощью ScrollView и HorizntalScrollView.

...