LinearLayout ImageView调整所有图像宽度以适应

时间:2013-03-03 18:11:22

标签: android imageview width android-linearlayout

我有一个包含3个图像视图的水平线性布局。每个图像视图包含200x200像素的相同图像。这是我的布局xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".MainActivity" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/image200" />

        <ImageView
            android:id="@+id/imageView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/image200" />

        <ImageView
            android:id="@+id/imageView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/image200" />

    </LinearLayout>

</RelativeLayout>

这就是它的样子:

linear layout test screenshot

请注意左边的第三张图像是如何调整大小我假设的,因为没有足够的空间来容纳3x 200像素宽的图像。

我宁愿发生的不是仅缩小最后一张图像,而是将所有三张图像均匀调整大小以使它们全部适合整个屏幕。如何设置布局以均匀适合所有三个图像?

谢谢

更新 - 在此处更改我的设置之后会出现以下情况:

updates

请注意,图像视图周围的边框仍然是200像素高。为什么会这样?

4 个答案:

答案 0 :(得分:14)

为图像视图设置宽度和高度为match_parent,为所有图像视图设置layout_weight = 1。还要设置属性android:scaleType="fitXY"

答案 1 :(得分:4)

这对我很有用:

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

    <ImageView
        android:adjustViewBounds="true"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>

    <ImageView
        android:adjustViewBounds="true"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>

    <ImageView
        android:adjustViewBounds="true"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>

</LinearLayout>

设置为0dp时的布局宽度,布局宽度是图片中的内容。这里LinearLayout的布局宽度与父级匹配。因此它将占据整个宽度,并且根据图像的布局宽度,它们占据了重量比的空间。

答案 2 :(得分:1)

使您的三张图片的宽度为0dp

并添加layout_weight为1

<ImageView
            android:id="@+id/imageView1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:src="@drawable/image200" />

答案 3 :(得分:1)

@JanTacci关于你的后续问题“请注意,即使图像缩小了,实际布局高度仍然是200像素。为什么会发生这种情况?”

我遇到了同样的问题并通过将此属性添加到每个ImageView来修复它:

android:adjustViewBounds="true"