拉伸ImageView,使其在对话框中填满整个屏幕

时间:2014-07-24 09:58:10

标签: android android-layout

我有一个应用程序,里面有很多小图片。提供"放大"功能我想打开一个Dialog(实现为带有对话框主题的Activity),其中只包含带有所选图片的ImageView。

图像/对话框应尽可能大(即按比例缩放到屏幕尺寸),但也只能根据需要显示。这意味着对于风景图片,对话框也应采用横向格式,而不是填满整个屏幕(顶部/底部有黑条)。 基本上我希望对话框尽可能大到ImageView和ImageView(同时考虑到包含图像的宽高比)。

有没有办法实现这个目标?

请注意,显示的图像可能比可用的屏幕空间小很多,但在这种情况下应放大。我无法根据用户生成的内容提供不同分辨率/屏幕尺寸的图片。

我当前的对话框布局文件(适用于大于设备显示的图片,但不会缩小图片尺寸):

<?xml version="1.0" encoding="UTF-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:background="@color/image_overlay" <!-- semi transparent background -->
             android:gravity="center"
             android:foregroundGravity="center">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:scaleType="centerInside"
        android:layout_margin="8dp"/>
</FrameLayout>

1 个答案:

答案 0 :(得分:1)

使用ScaleType.FIT_XY。请记住,这会破坏纵横比(因为图像将被拉伸)。 official definition

  

独立地在X和Y中缩放,以便src与dst完全匹配。这个   可能会改变src的宽高比。

例如,在您的Java代码中,使用

ImageView image = (ImageView) findViewById(R.id.img_background);
imgview.setScaleType(ScaleType.FIT_XY);

等效地,您可以在XML中使用:

<ImageView
    ...
    android:scaleType="fitXY" />