设置元素高度直到视图结束
Posted
技术标签:
【中文标题】设置元素高度直到视图结束【英文标题】:Set element height till end of view 【发布时间】:2021-12-21 15:45:16 【问题描述】:伙计们,我上面的代码如下所示:
问题是我需要设置硬编码的高度以使其可见。 我想要的是将高度设置到主视图的底部。
这可以使用 height 属性还是我需要使用其他属性? 我当前的实现如下所示:
<?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_
android:layout_
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".pkgFragment.LocationAddFragment">
<RelativeLayout
android:layout_
android:layout_>
<LinearLayout
android:id="@+id/llLayoutAddLocation"
android:layout_
android:layout_
android:layout_below="@+id/abLayoutAddLocation"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:orientation="vertical">
<GridLayout
android:layout_
android:layout_
android:columnCount="2"
android:rowCount="1"
>
<com.google.android.material.switchmaterial.SwitchMaterial
android:layout_columnWeight="1"
android:layout_
android:text="@string/vehicle_name"/>
<com.google.android.material.switchmaterial.SwitchMaterial
android:layout_columnWeight="1"
android:layout_
android:text="@string/vehicle_name"/>
</GridLayout>
</LinearLayout>
<org.osmdroid.views.MapView
android:layout_
android:layout_
android:layout_below="@id/llLayoutAddLocation"
>
</org.osmdroid.views.MapView>
</RelativeLayout>
</ScrollView>
【问题讨论】:
您不能同时将高度设置为硬编码并使其填充剩余空间。 Match_parent 高度将使其填充剩余部分。为什么你认为它需要硬编码? @GabeSechan 我不希望它被硬编码但 mit matchparent,该视图还涵盖了线性布局,这就是为什么我尝试将其设置为硬编码,这是不好的做法 【参考方案1】:我 MapView 的高度/宽度不需要硬编码。我自己检查了回购。您可以使用 match_parent 填充整个底部区域。这是来自 repo MapView Sample Layout 的示例。
我建议,不要使用RelativeLayout
,而是使用LinearLayout
作为ScrollView
的子(唯一)并将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_
android:layout_>
<LinearLayout
android:id="@+id/llLayoutAddLocation"
android:layout_
android:layout_
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:orientation="vertical">
<GridLayout
android:layout_
android:layout_
android:columnCount="2"
android:rowCount="1"
>
<com.google.android.material.switchmaterial.SwitchMaterial
android:layout_columnWeight="1"
android:layout_
android:text="@string/vehicle_name"/>
<com.google.android.material.switchmaterial.SwitchMaterial
android:layout_columnWeight="1"
android:layout_
android:text="@string/vehicle_name"/>
</GridLayout>
</LinearLayout>
<org.osmdroid.views.MapView
android:layout_
android:layout_
>
</org.osmdroid.views.MapView>
</LinearLayout>
编辑: 我已经编辑了答案。移除滚动视图并将Parent LinearLayout的高度和宽度设置为match_parent。
【讨论】:
我尝试了你的代码,但我的地图没有被填满,直到屏幕结束。 我已经编辑了我的答案。请检查。 它有效。但是我在代码中发现了一个错误:当手机旋转并且我说一个带有打开键盘的文本视图时,键盘消失了。这就是为什么我确实将滚动视图放在第一种情况下。为了在我添加文本视图时保留键盘。但是现在我猜这个解决方案也可以工作:) 很高兴听到它正在工作。以上是关于设置元素高度直到视图结束的主要内容,如果未能解决你的问题,请参考以下文章