如何根据固定高度使ImageView匹配宽度?

时间:2016-01-22 10:11:45

标签: android android-imageview

我有一些图像,必须缩放到公共高度,但宽度不同。如何在LinearLayout内将它们设置为固定高度,以便自动评估它们的宽度以保持其纵横比?

我试过了:

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

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="200dp"
            android:src="@drawable/clean"/>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="200dp"
            android:src="@drawable/c4"/>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="200dp"
            android:src="@drawable/c4"/>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="200dp"
            android:src="@drawable/c4"/>

    </LinearLayout>

不幸的是,效果远远超出我的预期(图像太宽):

Result

3 个答案:

答案 0 :(得分:1)

这样做,请使用android:scaleType="centerCrop"

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

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:layout_weight="0.25"
                android:scaleType="centerCrop"
                android:src="@drawable/clean"/>
            <ImageView
                android:layout_width="match_parent"
                android:layout_height="200dp"
               android:layout_weight="0.25"
                 android:scaleType="centerCrop"
                android:src="@drawable/c4"/>
            <ImageView
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:layout_weight="0.25"
                android:scaleType="centerCrop"
                android:src="@drawable/c4"/>
            <ImageView
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:layout_weight="0.25"
                android:scaleType="centerCrop"
                android:src="@drawable/c4"/>

        </LinearLayout>

答案 1 :(得分:0)

对于权重=“1”的所有ImageView使用width =“0”,并在ImageView内部而不是在src中将图像设置为背景

答案 2 :(得分:0)

发现它!诀窍是同时使用android:scaleType="fitXY"android:adjustViewBounds="true"

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

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="200dp"
            android:scaleType="fitXY"
            android:adjustViewBounds="true"
            android:src="@drawable/clean"/>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="200dp"
            android:scaleType="fitXY"
            android:adjustViewBounds="true"
            android:src="@drawable/c4"/>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="200dp"
            android:scaleType="fitXY"
            android:adjustViewBounds="true"
            android:src="@drawable/c4"/>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="200dp"
            android:scaleType="fitXY"
            android:adjustViewBounds="true"
            android:src="@drawable/c4"/>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="200dp"
            android:scaleType="fitXY"
            android:adjustViewBounds="true"
            android:src="@drawable/c4"/>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="200dp"
            android:scaleType="fitXY"
            android:adjustViewBounds="true"
            android:src="@drawable/c4"/>

    </LinearLayout>