对Android权重的误解
我尝试了几种不同的方法来计算重量,但显然,对于如何实现我的目标,存在着一些明显的错误理解。我只是想让ImageView占据整个屏幕宽度的1/3,而让TextView的布局占据整个屏幕宽度的2/3 然而,当我尝试操作它时,最终得到的结果是,ImageView很小,几乎没有占用它应该占用的空间。我整个上午都在胡闹,想把布局弄对 下面的答案让我得出以下结论,这就是本例中发生的情况:对Android权重的误解,android,Android,我尝试了几种不同的方法来计算重量,但显然,对于如何实现我的目标,存在着一些明显的错误理解。我只是想让ImageView占据整个屏幕宽度的1/3,而让TextView的布局占据整个屏幕宽度的2/3 然而,当我尝试操作它时,最终得到的结果是,ImageView很小,几乎没有占用它应该占用的空间。我整个上午都在胡闹,想把布局弄对 下面的答案让我得出以下结论,这就是本例中发生的情况: 权重有时有点违反直觉。尝试使用小数,使大的为.66,小的为.34。有很多例子使用整数,但我相信在大多数情况下,最好使用
权重有时有点违反直觉。尝试使用小数,使大的为.66,小的为.34。有很多例子使用整数,但我相信在大多数情况下,最好使用0到1之间的数字
编辑:所以我只是看了一下您的xml,并意识到它可能更多是因为您使用的宽度和高度。为了获得最佳的权重效果,您应该使用“填充父项”。权重有时有点违反直觉。尝试使用小数,使大的为.66,小的为.34。有很多例子使用整数,但我相信在大多数情况下,最好使用0到1之间的数字
编辑:所以我只是看了一下您的xml,并意识到它可能更多是因为您使用的宽度和高度。为了获得最佳的权重效果,您应该使用“填充父项”。在线性布局中,有一个技巧可以使权重发挥作用-您应该将维度设置为将权重应用为零
类似于此。在线性布局中,有一个使权重起作用的技巧-您应该设置维度以将权重应用于零
类似这样的东西。关于重量,没有什么真正棘手的。使用权重表示的是“测量布局中的所有视图,然后获取剩余的空间,并根据它们的权重进行划分”。权重仅影响剩余空间。这就是为什么将所有视图的维度设置为
0dp
有效的原因,因为在这种情况下,所有空间都是剩余空间。关于权重没有什么真正棘手的。使用权重表示的是“测量布局中的所有视图,然后获取剩余的空间,并根据它们的权重进行划分”。权重仅影响剩余空间。这就是为什么将所有视图的尺寸设置为0dp
有效的原因,因为在这种情况下,所有空间都是剩余空间。可能的重复,特别是这个答案:可能的重复,特别是这个答案:这是诀窍部分。我假设“包装内容”与“0dip”的工作原理类似。它正在等待来自源的重量或尺寸(如图像宽度/高度)的输入。哦,我明白了。不,wrap_内容只会为其指定适合其内容的最小大小。很高兴听到现在一切都好了,这是关键。我假设“包装内容”与“0dip”的工作原理类似。它正在等待来自源的重量或尺寸(如图像宽度/高度)的输入。哦,我明白了。不,wrap_内容只会为其指定适合其内容的最小大小。很高兴听到现在一切都好了。
<?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" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="3">
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/skeleton"
android:layout_weight="1"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="2">
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10" />
<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<ImageView
android:id="@+id/imageView1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:src="@drawable/display_pro_skeleton"
android:layout_weight="1"/>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="2">
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:ems="10" />
<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:ems="10" />
</LinearLayout>