这是我在Android应用中的第一次尝试。请原谅所有的无知和愚蠢。
如果为所有元素分配了该属性的值,我会了解weight
的工作原理。那么weight
如何使ListView
填充LinearLayout
中两个元素之间的所有可用空间,当它是唯一具有权重的元素时,该怎么办?
我有一个简单的布局,顶部有ListView
,屏幕底部有EditText
,'按钮, and
TextView . Only the
ListView and
TextView have
weight`属性(许多属性,如边距等等,以及为简洁起见仅省略默认属性的元素):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerHorizontal="true"
android:orientation="vertical"
android:weightSum="10">
<ListView
android:id="@+id/files_list"
android:background="@drawable/text_view_border"
android:layout_height="0dp"
android:layout_weight="7.99"
...
android:soundEffectsEnabled="true" />
<TextView
android:id="@+id/result_text"
...
android:layout_width="fill_parent"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_height="wrap_content"
android:layout_weight="0.43"
android:gravity="center" />
</LinearLayout>
现在,如何使ListView
填充scree上的可用空间?我原以为height=*
或类似的东西会这样做。并且&#34; 0.43&#34; +&#34; 7.99&#34;不在weightsome="10"
附近只会增加我的困惑。
答案 0 :(得分:3)
在这种情况下,您不需要使用weightSum
。如果您希望视图仅占用可用空间的一部分而不是全部空间,则weightSum
会更有用。如果您从result_text
移除权重并从weightSum
中删除LinearLayout
,那么它将按预期工作。您还可以将layout_weight
的{{1}}设置为更好的数字,例如files_list
。
来自Documenation:
定义最大重量总和。如果未指定,则总和通过计算 添加所有子项的layout_weight。这可以用于 实例给予单个孩子50%的总可用空间 给它一个layout_weight为0.5并将weightSum设置为1.0。
必须是浮点值,例如“1.2”。
这应该这样做:
1
答案 1 :(得分:0)
使用android:layout_width =“match_parent”insted of fill_parent。 这将填充屏幕宽度的所有空间。 在最新版本的android中,不再使用fill_parent