图像拉伸

时间:2011-05-05 22:15:19

标签: android imageview scale android-linearlayout

API 7(2.1)

我正在为我的应用程序的drawable-hdpi文件夹实现高分辨率图像。

在屏幕的底部,我有一个带有fill_parent宽度的LinearLayout。在里面,我有3个LinearLayouts,权重为1.在这些内部,我有一个ImageView。实际上,我有3个相同大小的空间用于3张图像。

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">   
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center">
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/image1"
                />
        </LinearLayout>
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:padding="0dip">
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/image2"
                />
        </LinearLayout>
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center">
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/image3"
                />
        </LinearLayout>
    </LinearLayout>

当手机处于横向模式时,一切都很好。

当手机处于纵向模式时,图像会缩小,因为它们的宽度对于屏幕上的1/3空间来说太宽。图像看起来还不错。

这是我的问题:

我的图像缩放得很好,但看起来包裹每个图像的LinearLayouts不会缩放它们的高度。

在横向模式下,包裹图像的LinearLayouts的顶部和底部共享边缘。意思是,ImageView的顶部与包裹它的LinearLayout的顶部对齐,ImageView的底部与包裹它的LinearLayout的底部对齐。换句话说,LinearLayout的高度== ImageView的高度。

在纵向模式下,包裹图像的LinearLayouts的顶部和底部在它们与图像的顶部和底部之间有一堆空间,几乎就像有填充一样。换句话说,LinearLayout的高度> ImageView的高度。这是不可取的。

有什么想法吗?

它几乎就像调整LinearLayout和ImageView一样,然后压缩ImageView以适应,然后不调整LinearLayout的大小......

3 个答案:

答案 0 :(得分:4)

您可以尝试为两个方向设计单独的布局。在项目的res文件夹中创建一个名为layout-land的子文件夹。复制或创建具有相同名称的新布局。通过这种方式,您可以完全控制任何方向的布局。

由于您使用的是android:layout_weight="1",因此不应该使用linearLayouts来分割空间,因此会出现额外的空间吗?

编辑: 当LinerLayout设置了权重时,似乎是ImageView扩展了它的高度。将此行添加到每个ImageView:

  

机器人:adjustViewBounds = “真”

答案 1 :(得分:0)

我知道这并没有回答你提出的问题,但是当设备方向改变时,通过将线性布局的方向更改为垂直来避免多个问题似乎更好。我相信你可以使用OrientationEventListener。

答案 2 :(得分:0)

我认为为肖像模式设计另一种布局会更好。 不要对纵向和横向模式使用相同的布局。最好为纵向和横向模式设置不同的布局,以便控制设计在我们手中。