我有一个相对的主要布局,所以我可以设置一个视图在布局的底部对齐。问题是我想使用布局重力将视图的宽度设置为百分比,但由于相对布局不支持布局重力,我无法这样做。
如何将相对布局的子视图的高度设置为总屏幕高度的百分比?
修改
我已尝试使用线性布局,但我不能将android:layout_alignParentBottom="true"
用于线性布局。问题的关键在于视图需要位于屏幕的底部,但高度为百分比,这与布局重力无关。这是一个问题22.解决方案是什么?求助于程序化设置?
<RelativeLayout 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"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:paddingTop="0dp"
android:paddingBottom="0dp"
tools:context=".MainActivity"
android:id="@+id/activity_main"
android:orientation="vertical">
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<View android:id="@+id/rectangle_at_the_bottom"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="#00FFFF"
android:layout_alignParentBottom="true" />
</RelativeLayout>
答案 0 :(得分:0)
使用LinearLayout
代替RelativeLayout
并根据需要指定权重。
答案 1 :(得分:0)
请检查以下布局文件,因为我在屏幕上创建了一个:
<LinearLayout 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"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.2" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" >
<!-- The view I want to set the height as a percentage -->
<View
android:id="@+id/rectangle_at_the_top"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="#00FFFF" />
<!-- My list view -->
</RelativeLayout>
答案 2 :(得分:0)
替换
<View android:id="@+id/rectangle_at_the_top"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="#00FFFF"
android:layout_alignParentBottom="true"/>
与
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_below="@id/listView1"
android:orientation="vertical"
android:weightSum="1">
<View android:id="@+id/rectangle_at_the_top"
android:layout_width="match_parent"
android:background="#00FFFF"
android:layout_height="0dp"
android:layout_weight="0.5" />
</LinearLayout>
在这里,我假设您想要填充50%的剩余空间,因此将layout_weight设置为0.5。您可以用所需的百分比替换它。
答案 3 :(得分:0)
我自己想出了解决方案。
<LinearLayout 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"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:paddingTop="0dp"
android:paddingBottom="0dp"
tools:context=".MainActivity"
android:id="@+id/activity_main"
android:orientation="vertical">
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_alignParentBottom="true"
android:layout_above="@id/listView1">
<View android:id="@+id/rectangle_at_the_bottom"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00FFFF" />
</LinearLayout>
</LinearLayout>