Заполнить макетом до следующего макета (внизу) - PullRequest
0 голосов
/ 05 мая 2018

Итак, у меня есть заголовок, а затем CardView, который должен заполнить экран до нижнего колонтитула. Проблема в том, что он заполняет весь экран, а нижний колонтитул уходит «под» экран, как вы можете видеть на изображениях.

Я хочу, чтобы нижний колонтитул (кнопка + два изображения) всегда был внизу, а просмотр карты всегда должен занимать остальную часть экрана. В просмотре карты есть прокрутка, которая позволяет читать текст в просмотре карты.

В любом случае, вот код XML:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/grey_10">

    <View
        android:layout_width="match_parent"
        android:layout_height="160dp"
        android:background="@color/colorPrimary" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_centerInParent="true"
        android:layout_marginBottom="@dimen/spacing_mlarge"
        android:orientation="vertical"
        android:padding="@dimen/spacing_mlarge">

    <TextView
        android:id="@+id/qstView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:layout_marginBottom="20dp"
        android:text="Insert question text here"
        android:textAppearance="@style/Base.TextAppearance.AppCompat.Large"
        android:textColor="@color/white" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.v7.widget.CardView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_marginBottom="@dimen/spacing_middle"
            android:layout_marginEnd="@dimen/spacing_middle"
            android:layout_marginLeft="@dimen/spacing_middle"
            android:layout_marginRight="@dimen/spacing_middle"
            android:layout_marginStart="@dimen/spacing_middle"
            android:layout_marginTop="@dimen/spacing_middle"
            android:visibility="visible"
            app:cardCornerRadius="6dp"
            app:cardElevation="5dp">

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

                <LinearLayout
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">

                    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                        android:id="@+id/checkbox_full_layout"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:layout_margin="5dp"
                        android:orientation="vertical">

                    </LinearLayout>

                </LinearLayout>
            </ScrollView>

        </android.support.v7.widget.CardView>
    </LinearLayout>
    <Button
        android:id="@+id/add_field_button"
        android:layout_width="match_parent"
        android:layout_height="55dp"
        android:onClick="onAddAnswer"
        android:layout_gravity="bottom"
        android:layout_marginLeft="-4dp"
        android:layout_marginRight="-4dp"
        android:background="@drawable/btn_rounded_primary"
        android:text="Suivant"
        android:textAllCaps="false"
        android:textColor="@android:color/white"
        android:textStyle="bold" />
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginBottom="@dimen/spacing_mlarge"
        android:layout_gravity="center_horizontal"
        android:gravity="center">
        <ImageView
            android:layout_width="80dp"
            android:layout_height="60dp"
            android:layout_gravity="center_horizontal"
            android:layout_marginBottom="@dimen/spacing_mlarge"
            android:layout_marginTop="@dimen/spacing_large"
            android:src="@drawable/ineedhelp"/>
        <View
            android:layout_width="@dimen/spacing_large"
            android:layout_height="0dp" />
        <ImageView
            android:layout_width="80dp"
            android:layout_height="60dp"
            android:layout_gravity="center_horizontal"
            android:layout_marginBottom="@dimen/spacing_mlarge"
            android:layout_marginTop="@dimen/spacing_large"
            android:src="@drawable/mbtouch_dark"/>
    </LinearLayout>
        <View
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginBottom="@dimen/spacing_middle"
            android:layout_alignParentBottom="true"/>
    </LinearLayout>
</RelativeLayout>

Это то, что у меня есть на данный момент:

Relative Layout - I have at the moment

И это то, что я хотел бы иметь (здесь я приводил размеры, но поскольку не все устройства одинаковы, пространство не будет использоваться оптимально).

Relative Layout - I want

Заранее спасибо!

1 Ответ

0 голосов
/ 05 мая 2018

Попробуйте расположить ваш вид, как показано ниже (для CardView и нижнего макета остальные объекты останутся такими, как были).

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    ....
    ...>

     <!--  Since, weight is 1 it will occupy whole space subtracting height of bottom  -->
     <CardView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        .... />

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        ....>

        <!--  Put your bottom widgets over here  -->

    </LinearLayout>

</LinearLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...