0

我已经尝试了几种不同的权重方法,但显然对于如何获得我在这里的目标存在一些明显的误解。简单地说,我想要做的是让 ImageView 在宽度上占据屏幕的 1/3,而让 textViews 的布局在宽度上占据屏幕的 2/3 的其余部分。

然而,当我尝试操作它时,最终得到的是 ImageView 很小并且几乎没有占用它应该的空间。我整个早上都在搞乱布局。

下面的答案让我想到了在这种情况下发生的事情:

0dip 布局尺寸

<?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>
4

3 回答 3

3

在线性布局中,有一个技巧可以使权重起作用 - 您应该将尺寸设置为将权重应用为零。

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

像这样的东西。

于 2013-07-31T15:15:23.553 回答
1

权重根本没有什么棘手的问题。使用权重的意思是“测量我布局中的所有视图,然后取出剩余的空间,并根据它们的权重进行划分”。权重只影响剩余空间。这就是为什么将所有视图的尺寸设置为0dp有效的原因,因为在这种情况下,所有空间都是剩余空间。

于 2013-07-31T17:03:24.353 回答
0

权重有时有点违反直觉。尝试使用小数,大的为 0.66,小的为 0.34。有很多使用整数的例子,但我相信在大多数情况下,最好使用 0 到 1 之间的数字。

编辑:所以我只是多看了一点你的 xml 并意识到它可能更多是因为你使用的宽度和高度。为了获得最佳权重结果,您应该使用“fill_parent”。

于 2013-07-31T15:13:08.457 回答