为什么以下列表仅显示第二个TextView
(红色)?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="11111"
android:background="#00FF00" />
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="0"
android:background="#FF0000"
android:text="00000"/>
</LinearLayout>
我知道如果我设置android:layout_height="0px"
,它只显示第一个TextView
(绿色),我理解这种行为。
但是,当我设置android:layout_height="match_parent"
时,第一个TextView
完全从屏幕上消失。
答案 0 :(得分:3)
来自https://developer.android.com/guide/topics/ui/layout/linear.html
它消失了,因为第二个获得完整的空间,因为它被给予
android:layout_weight="0"
和
android:layout_height="match_parent"
**,如上所述。
LinearLayout还支持为各个孩子分配权重 使用
android:layout_weight
属性。此属性指定一个 对于视图的“重要性”价值应该是多少空间 占据屏幕上。较大的重量值允许它扩展到 填充父视图中的任何剩余空间。子视图可以指定一个 权重值,然后视图组中的任何剩余空间 按照宣称的体重比例分配给儿童。 默认权重为零。例如,如果有三个文本字段,其中两个声明了一个 重量为1,而另一个没有重量,第三个文字字段 没有重量不会增长,只会占据所需的面积 它的内容。其他两个将同等扩展以填补空间 测量完所有三个字段后剩下的。
如果第三个字段的权重为2(而不是0),那么它 现在被宣布比其他人更重要,所以它变得一半 总剩余空间,而前两个平均分享其余部分。
答案 1 :(得分:1)
android:layout_weight="1"
表示您正在将未被其他视图占用的剩余空间分配给该视图..所以在这种情况下第二 TextView
是match_parent所以没有空格留空是为什么第一个 TextView
不可见
P.S:将权重传递给父布局,并根据您的需要在子视图中分配权重 感谢
答案 2 :(得分:0)
你的代码基本上是说,给我的第一个文本视图所有的空间和我的第二个文本视图无,尝试给每个孩子一个权重1,这应该给他们相等的间距。此外,由于您具有垂直定向父级,因此在子级中设置与父级匹配的布局高度与weight属性相矛盾。所以删除它并替换换行内容。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="11111"
android:background="#00FF00" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#FF0000"
android:text="00000"/>
</LinearLayout>
答案 3 :(得分:0)
android:layout_weight意味着你希望这些视图与彼此和父视图相比较 例如,如果你这些代码:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Button2"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Button1"/>
</LinearLayout>
如果我将Button1的layout:weight从1更改为2而Button2的重量仍为1,那么Button1的宽度将比Button2的2倍大
答案 4 :(得分:0)
您已将第一个按钮的重量值设置为1,将第二个按钮的重量值设置为0, 所以按钮一将覆盖整个空间
您应该给父母布局一个权重总额,并根据所需的比例在孩子之间分配总额。
答案 5 :(得分:0)
https://developer.android.com/guide/topics/ui/layout/linear.html https://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
https://ugia.io/2012/01/19/android-linearlayout-distribution-explained-weight-and-sizes/
match_parent与wrap_content或特定大小(0px,1px,100px等)不同,在您的情况下,它将占用父视图的所有空间,直到LinearLayout的大小。
layout_weight用于平衡,它取决于你的layout_width
答案 6 :(得分:0)
但是为什么,如果我在第二个TextView中设置:
android: layout_weight = "0.1"
TextView的第二个组件占用的空间比设置时少:
android: layout_weight = "0"
如果我在第二个TextView中设置
android: layout_weight = "0.2"
TextView的第二个组件占用的空间比设置
的空间要小android:layout_weight =&#34; 0.1&#34;
因此,如果我将android:layout_weight的值设置得更高,那么它占用的尺寸会更小。