7

我有一个包含 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>

这是它的样子:

线性布局测试截图

注意我假设从左边数第三个图像的大小是如何调整的,因为没有足够的空间来包含 3x 200 像素宽的图像。

我宁愿发生的事情不是只缩小最后一个图像,而是均匀调整所有三个图像的大小,以便它们都适合整个屏幕。如何设置布局以均匀地适合所有三个图像?

谢谢

更新 - 更改我的设置后,这里是这样的:

更新

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

4

4 回答 4

15

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

于 2013-03-03T18:14:10.123 回答
7

这对我来说非常有效:

    <?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 的布局宽度与父级匹配。所以它将占据整个宽度,并且根据图像的布局宽度,它们以重量的比例占据空间。

于 2017-04-21T09:00:51.270 回答
2

使您的三个图像的宽度为 0dp

并将它们添加为 1 的 layout_weight

;)

<ImageView
            android:id="@+id/imageView1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:src="@drawable/image200" />
于 2013-03-03T18:14:01.963 回答
2

@JanTacci 关于您的后续问题“但是,请注意,即使图像已缩小,实际布局高度仍为 200 像素。为什么会这样?”

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

android:adjustViewBounds="true"
于 2016-06-07T02:53:55.550 回答