设置元素高度直到视图结束

Set element height till end of view

伙计们,我上面的代码看起来像这样:

问题是我需要硬编码设置高度以使其可见。 我想要的是将高度设置到主视图的底部。

这可以使用高度属性还是我需要使用其他属性? 我当前的实现如下所示:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context=".pkgFragment.LocationAddFragment">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <LinearLayout
            android:id="@+id/llLayoutAddLocation"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/abLayoutAddLocation"
            android:layout_marginLeft="30dp"
            android:layout_marginRight="30dp"
            android:orientation="vertical">

            <GridLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:columnCount="2"
                android:rowCount="1"
                >
            
                <com.google.android.material.switchmaterial.SwitchMaterial
                    android:layout_columnWeight="1"
                    android:layout_height="match_parent"
                    android:text="@string/vehicle_name"/>
                <com.google.android.material.switchmaterial.SwitchMaterial
                    android:layout_columnWeight="1"
                    android:layout_height="match_parent"
                    android:text="@string/vehicle_name"/>
            </GridLayout>

        </LinearLayout>

        <org.osmdroid.views.MapView
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:layout_below="@id/llLayoutAddLocation"

            >

        </org.osmdroid.views.MapView>
    </RelativeLayout>
</ScrollView>

我的 MapView height/width 不需要硬编码。我自己检查了回购协议。您可以使用 match_parent 填满整个底部区域。这是回购 MapView Sample Layout .

中的示例

我建议,不要使用 RelativeLayout,而是使用 LinearLayout 作为 ScrollView 的 child(仅)并将 MapView 高度设置为 match_parent.

您的代码将如下所示:

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:id="@+id/llLayoutAddLocation"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:layout_marginRight="30dp"
            android:orientation="vertical">

            <GridLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:columnCount="2"
                android:rowCount="1"
                >
            
                <com.google.android.material.switchmaterial.SwitchMaterial
                    android:layout_columnWeight="1"
                    android:layout_height="match_parent"
                    android:text="@string/vehicle_name"/>
                <com.google.android.material.switchmaterial.SwitchMaterial
                    android:layout_columnWeight="1"
                    android:layout_height="match_parent"
                    android:text="@string/vehicle_name"/>
            </GridLayout>

        </LinearLayout>

        <org.osmdroid.views.MapView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            >

        </org.osmdroid.views.MapView>
    </LinearLayout>

编辑: 我已经编辑了答案。移除scrollview并将Parent LinearLayout的高度和宽度设置为match_parent。