如何在LinearLayout中设置imageview高度以匹配图像比例?

时间:2014-08-24 18:28:49

标签: android android-layout

我有一个Imageview列表,其宽度由线性布局的权重设置。如何设置Imageviews的高度以确保它们保持位图的原始宽高比被加载到图像中。

以下是我的xml的一部分:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/ll_auction"
    android:weightSum="100"
    android:paddingBottom="10dp">

    <ImageView
        android:layout_width="0dp"
        android:layout_weight="30"
        android:layout_height="@dimen/auction_image_height"
        android:layout_gravity="center"
        android:background="@drawable/image_view_background_unselected"
        android:layout_margin="2dp"
        android:adjustViewBounds="true"
        android:id="@+id/niv_auctionImage1" />

2 个答案:

答案 0 :(得分:0)

您可以将名为scaletype的属性添加到imageview,并将其设置为fitxy

样品

android:scaleType="fitXY"

它会根据您在属性中指定的重量自动缩放图像

答案 1 :(得分:0)

如果要通过布局权重指定宽度,并且希望图片保持其宽高比,则需要高度为wrap_content。调整视图边界也是正确的,我会使用scaleType fitCenter。

您还需要确保将图像设置为src,而不是背景,它将始终被拉伸。

放手一搏。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/ll_auction"
    android:weightSum="100"
    android:paddingBottom="10dp">

    <ImageView
        android:layout_width="0dp"
        android:layout_weight="30"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="@drawable/image_view_background_unselected"
        android:layout_margin="2dp"
        android:src="@drawable/example_image"
        android:scaleType="fitCenter"
        android:adjustViewBounds="true"
        android:id="@+id/niv_auctionImage1" />