无法设法调整图像大小并保持比例

时间:2014-03-21 11:26:40

标签: android android-layout android-imageview

我的目标很简单:在imageView中拥有16/9比例的图像。我使用尺寸为16x9的png图像。我的应用程序有两种可能性:

  • 肖像:宽度固定,必须缩放高度
  • 风景:高度固定,必须缩放宽度

第一个可以正常使用这个布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/welcomeRootLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <FrameLayout
        android:id="@+id/welcomePilotingFrame"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:contentDescription="@null"
            android:scaleType="fitXY"
            android:src="@drawable/black_16_9e" />
    </FrameLayout>

    <!-- Other stuff that aren't relevant -->

</RelativeLayout>

这给了我想要的东西:我的红色角落图像被调整大小

enter image description here

现在有趣的部分开始了:风景:这是我的布局(对称的肖像画):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/welcomeLinearLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2" >

        <FrameLayout
            android:id="@+id/welcomePilotingFrame"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="#ff00ff00" >

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:adjustViewBounds="true"
                android:contentDescription="@null"
                android:scaleType="fitXY"
                android:src="@drawable/black_16_9e_border" />
        </FrameLayout>

        <FrameLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_alignParentRight="true"
            android:layout_toRightOf="@+id/welcomePilotingFrame" />

    </RelativeLayout>

<!-- Other stuff that aren't relevant -->

</LinearLayout>

现在,imageView明白它必须是它的所有父级高,但不会调整其宽度,因此不能保持我的16/9比率!

enter image description here

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

将第二个framelayout的layout_width更改为match_parent。 scale-type = fitxy也会改变图像的纵横比。将其更改为FIT_START