如何衡量'使元素填充Android布局中的可用空间?

时间:2016-09-23 19:05:42

标签: android android-layout listview

这是我在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"附近只会增加我的困惑。

2 个答案:

答案 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