为什么图像视图占用的空间比按重量提到的要多?

时间:2013-01-04 13:32:15

标签: android android-linearlayout android-imageview android-xml

我的XML代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<LinearLayout
    android:id="@+id/rl_upload_header"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:minHeight="50dp" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/upload_activity"
        android:textSize="20sp"
        android:textStyle="bold" />
</LinearLayout>

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1" >

    <LinearLayout
        android:id="@+id/ll_middle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:baselineAligned="false"
        android:gravity="center"
        android:orientation="horizontal" >

        <LinearLayout
            android:id="@+id/ll_img"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:gravity="center" >

            <ImageView
                android:id="@+id/image_view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:background="@drawable/app_icon_17"
                android:contentDescription="@string/empty" >
            </ImageView>
        </LinearLayout>

        <LinearLayout
            android:id="@+id/ll_eds"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="5"
            android:baselineAligned="false"
            android:gravity="center"
            android:orientation="vertical" >

            <EditText
                android:id="@+id/ed_img_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_marginTop="20dp"
                android:background="@drawable/text_box_background"
                android:hint="@string/name"
                android:paddingLeft="12dp" />

            <EditText
                android:id="@+id/ed_amount"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_marginTop="10dp"
                android:background="@drawable/text_box_background"
                android:hint="@string/amount"
                android:paddingLeft="12dp" />

            <EditText
                android:id="@+id/ed_desc"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="20dp"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_marginTop="10dp"
                android:background="@drawable/text_box_background"
                android:hint="@string/desc"
                android:paddingLeft="12dp" />
        </LinearLayout>
    </LinearLayout>
</ScrollView>

<LinearLayout
    android:id="@+id/rl_upload_bottom"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:baselineAligned="false"
    android:gravity="center"
    android:minHeight="70dp"
    android:orientation="horizontal" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:baselineAligned="false"
        android:gravity="center" >

        <Button
            android:id="@+id/button_upload"
            android:layout_width="120dp"
            android:layout_height="40dp"
            android:background="@drawable/upload" >
        </Button>
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:baselineAligned="false"
        android:gravity="center"
        android:minHeight="50dp" >

        <Button
            android:id="@+id/button_cancel"
            android:layout_width="120dp"
            android:layout_height="40dp"
            android:background="@drawable/discard" >
        </Button>
    </LinearLayout>
</LinearLayout>

</LinearLayout>

这里有ImageVIew(id =image_view),我想只占屏幕空间(宽度)的25%左右,剩余宽度应该由包含编辑文本(id =ll_eds)的布局拍摄。

但是当图像宽度很大时,它的屏幕宽度几乎达到90%。

那我错了什么?

我大概都想要这种设计。

2 个答案:

答案 0 :(得分:1)

layout_width上使用0 dip时,将layout_weight设置为View

请参阅Android工程师Romain Guy的回答:Android Layout Weight

答案 1 :(得分:1)

如果尺寸反转,请尝试切换图像的重量和其他布局。有时,Android的重量系统很容易让人失望

如果@ drawable / app_icon_17是不会更改的永久图像,则可以尝试RelativeLayout。您可以将图像锚定在屏幕左侧,然后将另一个ViewGroup放在其右侧。