Android:使ImageView匹配另一个视图的高度

时间:2013-07-23 04:15:20

标签: android layout imageview height android-linearlayout

我在设计应用程序布局时遇到问题。这就是我想要的:

=========================================================
|  =============   ================   ================  |
|  |           |   | LinearLayout |   | LinearLayout |  |
|  |           |   | ============ |   | ============ |  |
|  |           |   | | TextView | |   | | TextView | |  |
|  | ImageView |   | ============ |   | ============ |  |
|  |           |   | ============ |   | ============ |  |
|  |           |   | | TextView | |   | | TextView | |  |
|  |           |   | ============ |   | ============ |  |
|  |           |   | ============ |   | ============ |  |
|  |           |   | | TextView | |   | | TextView | |  |
|  |           |   | ============ |   | ============ |  |
|  =============   ================   ================  |
=========================================================

这是我到目前为止所做的事情(为了清楚起见,我已经删除了另一个东西):

<?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="wrap_content"
    android:orientation="horizontal"
    android:gravity="center_vertical" >


    <ImageView
        android:contentDescription="@string/logo"
        android:layout_width="wrap_content"
        android:layout_height="match_parent" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="left|center_vertical" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:singleLine="true" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="right|center_vertical"
        android:orientation="vertical" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:singleLine="true" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:singleLine="true" />

        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:singleLine="true" />

    </LinearLayout>

</LinearLayout>

我的问题是我想使用高分辨率图像并将其缩小以匹配旁边的最高线性布局。我的想法是让android在具有低dpi的设备上缩小图像,因此对所有平台使用相同的图像和布局。

现在,主容器高度变得与图像高度一样大。我想要的是主容器高度与“最高”线性布局相同,并强制缩小图像视图以适应主容器。

有什么想法吗?

谢谢!

PD:请原谅我的英语! :$

3 个答案:

答案 0 :(得分:1)

所有视图的高度宽度和所有这些东西都是在活动的onMeasure()中测量的。值得注意的是,任何视图的onMeasure()都在onDraw()之前执行并且可以执行n-次数。因此,最好在onMeasure()中计算LinearLayout的宽度和高度。

答案 1 :(得分:0)

    LinearLayout ll = (LinearLayout)findViewById(R.id.your_linearlayout);

    int llHeight = ll.getHeight();

    ImageView iv = (ImageView)findViewById(R.id.your_imageview);

    LayoutParams ivParams = ((ImageView)findViewById(R.id.your_imageview)).getLayoutParams();

    ivParams.height = llHeight;

    iv.setLayoutParams(ivParams );

答案 2 :(得分:0)

尝试实现以下代码。

见下图。

Here is the Screen shot of below code

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="horizontal"
          android:layout_width="match_parent"
          android:weightSum="1"
          android:background="#FFFFFF"
          android:layout_height="match_parent">

<LinearLayout
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:background="#000000"
        android:layout_marginTop="15dp"
        android:layout_marginBottom="15dp"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:weightSum="5"
        android:orientation="horizontal">

    <ImageView
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:layout_weight="0.9"
            android:background="@drawable/black"/>

    <LinearLayout
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:layout_weight="1.15">
    </LinearLayout>
    <LinearLayout
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:layout_weight="0.9"
            android:weightSum="4"
            android:orientation="vertical">

        <TextView
                android:layout_height="match_parent"
                android:layout_width="match_parent"
                android:layout_weight="1"
                android:text="Linear Layout"
                android:gravity="center_vertical|center_horizontal"
                android:textSize="25dp"/>
        <TextView
                android:layout_height="match_parent"
                android:layout_width="match_parent"
                android:layout_weight="1"
                android:text="TextView"
                android:gravity="center_vertical|center_horizontal"
                android:textSize="25dp"/>
        <TextView
                android:layout_height="match_parent"
                android:layout_width="match_parent"
                android:layout_weight="1"
                android:text="TextView"
                android:gravity="center_vertical|center_horizontal"
                android:textSize="25dp"/>
        <TextView
                android:layout_height="match_parent"
                android:layout_width="match_parent"
                android:layout_weight="1"
                android:text="TextView"
                android:gravity="center_vertical|center_horizontal"
                android:textSize="25dp"/>
    </LinearLayout>

<LinearLayout
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:layout_weight="1.15">
    </LinearLayout>
    <LinearLayout
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:layout_weight="0.9"
            android:weightSum="4"
            android:orientation="vertical">
        <TextView
                android:layout_height="match_parent"
                android:layout_width="match_parent"
                android:layout_weight="1"
                android:text="Linear Layout"
                android:gravity="center_vertical|center_horizontal"
                android:textSize="25dp"/>
        <TextView
                android:layout_height="match_parent"
                android:layout_width="match_parent"
                android:layout_weight="1"
                android:text="TextView"
                android:gravity="center_vertical|center_horizontal"
                android:textSize="25dp"/>
        <TextView
                android:layout_height="match_parent"
                android:layout_width="match_parent"
                android:layout_weight="1"
                android:text="TextView"
                android:gravity="center_vertical|center_horizontal"
                android:textSize="25dp"/>
        <TextView
                android:layout_height="match_parent"
                android:layout_width="match_parent"
                android:layout_weight="1"
                android:text="TextView"
                android:gravity="center_vertical|center_horizontal"
                android:textSize="25dp"/>
    </LinearLayout>
</LinearLayout>