layout_weight为水平和垂直

时间:2014-02-26 12:41:57

标签: android android-layout android-linearlayout

我有这样的情况:

Sample app

我有这样的布局:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <RelativeLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.6" >

        <!-- using relativelayout I can match background size to content -->

        <View
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@id/riderTable"
            android:layout_alignLeft="@id/riderTable"
            android:layout_alignRight="@id/riderTable"
            android:layout_alignTop="@+id/riderTable"
            android:background="@drawable/rider_opisowe" />

        <TableLayout
            android:id="@+id/riderTable"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="2dp"
            android:shrinkColumns="*" >

            <TableRow
                android:layout_width="match_parent"
                android:layout_height="wrap_content" >

                <!-- TextViews here -->
            </TableRow>
            <!-- more rows -->

        </TableLayout>
    </RelativeLayout>

    <ImageView
        android:id="@+id/imgPhoto"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:layout_weight="0.4"
        android:adjustViewBounds="true"
        android:src="@drawable/myImage" />

</LinearLayout>

60%/ 40%的比例有效,但是imageview(白色方块)与蓝盒高度不匹配。我希望图像容器的宽度为父级的40%,与蓝色框的高度相同并包含图像。

已经尝试过:Trying to get Android LinearLayout to stretch horizontally and vertically 然而,描述的简单示例仅使用单色背景,如果我切换到图像,则这不能按预期工作。所以将它放在另一个linearLayout中并不能解决问题。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

您的布局应该更像:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:baselineAligned="false"
    android:orientation="horizontal" 
    >

    <FrameLayout
        android:id="@+id/left"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:layout_weight="6" />

    <FrameLayout
        android:id="@+id/right"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_gravity="right"
        android:layout_weight="4" />

</LinearLayout>

你可以用你想要的任何东西替换左右框架布局。

答案 1 :(得分:1)

android:layout_height的{​​{1}}从wrap_content更改为match_parent

ImageView

答案 2 :(得分:0)

试试这可能会有所帮助

<ImageView
        android:id="@+id/imgPhoto"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_gravity="top"
        android:layout_weight="0.4"
        android:adjustViewBounds="true"
        android:src="@drawable/myImage" />