2014-07-24 96 views
0

我有一个应用程序中有很多小图像。为了提供“放大”功能,我想打开一个对话框(实现为具有对话框主题的Activity),其中只包含带有所选图片的ImageView。拉伸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

使用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" /> 
+0

感谢您的答复,但长宽比应全部保留意思是...... –

+1

啊,那么这是一个问题,之前已经问过很多次了,例如http://stackoverflow.com/q/8232608/823470 – tar

+1

你说得对,我没有找到 - 谢谢! –