xml布局如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="bottom"/>
</LinearLayout>
事实证明textview将被放置在其父级的底部。我认为layout_weight用于分配未使用的空间,并且使用layout_weight与以下代码非常相似:
android:layout_width="0dp"
但在这种情况下,第一个布局要求占用所有空格:
android:layout_width="match_parent"
android:layout_height="match_parent
那么布局重量如何在这里工作? PS:我已经读过这个问题:What does android:layout_weight mean?但我不认为它解释了这个问题。
layout_weight指定布局中要分配给View的多少额外空间。
第一个linearlayout已经使用属性match_parent获取整个空间,为什么设置layout_weight使第二个视图在底部显示? 我相信这不是layout_weight的常用用法。希望有人指出我的错误。
答案 0 :(得分:0)
当您使用layout_weight
属性时,它用于计算单亲的子视图的权重。
由于你没有提到所有其他观点的重量,它表现不对。
当您希望子视图占父视图的特定百分比时, layout_weight
非常有用。
例如,
在父视图中,您需要提及:android:weightSum="1"
因此,您的父视图的总权重为1,在两个视图中,您需要提及:
android:layout_weight=".9"
和android:layout_weight=".1"
所以第一个视图占用90%,第二个视图占用10%的空间。
更清楚理想情况下,所有孩子的权重总和应该等于父母提到的weightsum
,以便按预期工作。
**正如你提供了textview的android:layout_width,
android:layout_height`,这是错误,因为它会在权重中产生问题。
因此,要正确使用权重属性,您需要将其他规格设为0dp
,以便加权成功应用。**
注意:使用体重时,
android:layout_width, android:layout_height
等其他规格应设为0dp
。为了理解它,为什么不在下面玩 布局:
只需尝试更改linear_layout,text_view的权重,您就会看到它应该如何理想地运作:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="100" >
<LinearLayout
android:id="@+id/linear_layout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="10"
android:background="@android:color/holo_blue_bright" >
</LinearLayout>
<TextView
android:id="@+id/text_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="90"
android:background="@android:color/white"
android:text="bottom"
android:textColor="@android:color/black" />
</LinearLayout>
答案 1 :(得分:0)
如果要将组件放在布局中的单独框中,则应使用LinearLayout
。
您可以使用orientation
vertical 或 horizental 定义框的方式。
您可以使用layout_weight
轻松定义其大小。
看这里:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id=@+id/parent_linear>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="4">
</LinearLayout>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:text="bottom"/>
</LinearLayout>
parent_linear
将您的布局分为两部分(因为您使用了2个组件)。现在,您可以将权重设置为子组件的宽度。所以,(对于TextView)你设置android:layout_width="0dp"
的宽度和android:layout_weight="2"
.. 跟随它用于LinearLayout - 。
结果是 parent_layout 将自身划分为6个部分(2 + 4 = 6),并为LinearLayout分配4个部分,为TextView分配2个部分。