这是我第一次尝试Android应用程序。请原谅所有的无知和愚蠢。“重量”如何使元素填充Android布局中的可用空间?
我知道weight
是如何为所有元素指定一个属性值。那么weight
如何在LinearLayout
中填充ListView
中两个元素之间的所有可用空间时,它是唯一具有权重的元素?
我有一个简单的布局与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
填补卵石的可用空间?我会认为height=*
或类似的东西会这样做。 “0.43”+“7.99”不是很接近weightsome="10"
,这只会增加我的困惑。
詹姆斯的回答应该很好地工作。究竟是如何/为什么它的工作我不再问自己,只是接受Android框架有时很奇怪。在LinearLayout案例中,我知道在使用“0dp”或“wrap_content”时,有一些奇怪的重量值倒置。作为一般规则,我已经使用0dp或wrap_content中的任何一个而不加权重,因为这些导致混淆了weirdnessess。 – Budius