0

我有一个带有 5 个图像的 Android 水平线性布局。我希望 5 张图像水平适合屏幕,同时保持纵横比。每张图像为 128x128 像素。问题是,虽然宽度设置得像我想要的那样,但图像的高度保持不变,所以它们在更大的屏幕上看起来像这样(这是 Nexus 7):

在此处输入图像描述

我现在拥有的:

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:cropToPadding="true"
        android:scaleType="fitXY"
        android:src="@drawable/image01" />

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:scaleType="fitXY"
        android:src="@drawable/image02" />

    <ImageView
        android:id="@+id/imageView3"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:scaleType="fitXY"
        android:src="@drawable/image03" />

    <ImageView
        android:id="@+id/imageView4"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:scaleType="fitXY"
        android:src="@drawable/image04" />

    <ImageView
        android:id="@+id/imageView5"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:scaleType="fitXY"
        android:src="@drawable/image05" />

</LinearLayout>

谢谢您的帮助

4

3 回答 3

0

我找到了一些代码来创建一个方形视图,然后我可以用它来渲染我自己的自定义图形。你应该能够这样:

public class SquareImageView extends ImageView {
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);
        int height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
        int length = Math.min(width, height);
        setMeasuredDimension(length, length);
    }
}

我没有在 a 中尝试过这个平方代码,LinearLayout但是当使用RelativeLayout它首先定位并附加到父级的三个尺寸时,它工作得很好。这是希望 ImageView 对图像做正确的事情,否则您也将不得不覆盖 onDraw() 方法。

于 2013-06-24T06:19:57.777 回答
0

尝试用水平 LinearLayout 包围 imageview

    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" 
        android:layout_weight="1"
        android:layout_gravity="center">

        <ImageView
            android:id="@+id/btnHome"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="btnhome" />

    </LinearLayout>
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" 
        android:layout_weight="1"
        android:layout_gravity="center">
        <ImageView
            android:id="@+id/btnGames"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="btngames" />
    </LinearLayout>
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" 
        android:layout_weight="1"
        android:layout_gravity="center">
        <ImageView
            android:id="@+id/btnNews"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="btnnews"/>
    </LinearLayout>
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" 
        android:layout_weight="1"
        android:layout_gravity="center">
        <ImageView
            android:id="@+id/btnPayment"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="btnpayment"/>
    </LinearLayout>

然后,将 scaleType 更改为 fitCenter。

它将使您的图片具有正确的比例事件,您可以在更宽的屏幕上查看它。

于 2013-06-24T02:26:45.717 回答
0

将 scaleType 更改为 centerInside 或 fitCenter 和 height 以匹配父级。

于 2013-06-23T19:23:49.997 回答