RelativeLayout не уменьшается в высоту - PullRequest
1 голос
/ 11 мая 2010

Я не могу сжать свое относительное представление Layuot при использовании его в следующем макете, используемом в качестве диалога. В приведенном ниже примере представление прокрутки всегда расширяется, заполняя весь диалог, который выглядит очень некрасиво, если фактического содержания немного.

Я пробовал большинство комбинаций fill_parent, wrap_content и т. Д., Но безуспешно.

Проблема, похоже, заключается в том, что установка кнопки на «align_bottom» приведет к тому, что диалоговое окно заполняет ее высоту. Но если я изменю порядок и буду вынужден размещать кнопку под видом прокрутки, кнопка не будет видна, если отображается много контента ...

Обходной путь (который я считаю очень уродливым решением) - установить на полях прокрутки нижнее поле, а затем на кнопке то же отрицательное верхнее поле. Но я не уверен, как это будет выглядеть на разных экранах.

Пожалуйста, помогите / Рудас

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <ScrollView
        android:id="@+id/ScrollView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/dialogCloseButton"
        android:layout_alignParentTop="true" >

        <LinearLayout
            android:id="@+id/dialogContent"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:paddingBottom="10dp" >

            <TextView
                android:id="@+id/TextView01"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >
            </TextView>
        </LinearLayout>
    </ScrollView>

    <Button
        android:id="@+id/dialogCloseButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:text="Close" >
    </Button>

</RelativeLayout><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <ScrollView
        android:id="@+id/ScrollView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/dialogCloseButton"
        android:layout_alignParentTop="true" >

        <LinearLayout
            android:id="@+id/dialogContent"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:paddingBottom="10dp" >

            <TextView
                android:id="@+id/TextView01"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >
            </TextView>
        </LinearLayout>
    </ScrollView>

    <Button
        android:id="@+id/dialogCloseButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:text="Close" >
    </Button>

</RelativeLayout>

1 Ответ

0 голосов
/ 03 августа 2010

ScrollView - это особый тип FrameLayout. Это означает, что он всегда будет начинаться в верхнем левом углу родительского макета. Эффект перекрывает другие виды, и настройки RelativeLayout не будут действовать. Решение состоит в том, чтобы поместить StrollView в отдельный макет (например, LinearLayout).

...