图像不适合布局

时间:2014-04-29 20:42:09

标签: android image android-layout android-screen-support

我在页面上阅读过页面,但是我仍然遇到多个屏幕的布局问题。 我有一个1080 * 300像素的图像水平占据nexus 5屏幕,并在布局顶部对齐(一种标题)。现在,如果我将其缩放为xhdpi屏幕(如galaxy nexus和nexus 4),我将无法获得相同的结果。按照跟随比例单位,xxhdpi中的1080 px宽度图像变为720像素图像。这个尺寸非常适合Galaxy nexus屏幕(它的gnexus屏幕宽度),但不适用于更大(768像素)的nexus 4,因此图像不会填满所有屏幕宽度,我右边有一个空白区域。 如果我尝试将图像缩放到768像素宽度,它适用于nexus 4,但不适用于gnex。 我也注意到当我更改虚拟设备进行预览时,来自adt控制台的错误:

Displaying it with ', , Locale Language ___Region __, Left To Right, sw384dp, w384dp, h640dp, Normal Screen, Short screen aspect ratio, Portrait Orientation, Normal, Day time, X-High Density, Finger-based touchscreen, Soft keyboard, No keyboard, Hidden navigation, No navigation, Screen resolution 1280x768, API Level 19'

怎么了?

1 个答案:

答案 0 :(得分:1)

您可以使用由Maurycy Wojtowicz撰写的名为ScaleImageView的自定义视图。

类的定义如下:

  

此视图将通过确定是否自动确定宽度或高度   设置高度或宽度(精确大小或match_parent)并缩放   其他尺寸取决于图像尺寸此视图也是如此   包含一个调用changed(boolean isEmpty)的ImageChangeListener   一旦对ImageView进行了更改

以下是您将如何实施它。

创建一个名为ScaleImageView.java的类,并复制上面链接的内容。

在你的xml文件中,创建一个ScaleImageView,就像ImageView一样(我在下面写的例子是为了填充屏幕宽度,并根据它来缩放高度,这样就没有空格了右/左)

    <com.project.customview.ScaleImageView
        android:id="@+id/scaleImageView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:scaleType="fitCenter"
        android:src="@drawable/file" />

如果需要在Activity中以编程方式声明和设置,它也与使用ImageView相同:

imageView = (ScaleImageView)findViewById(R.id.scaleImageView);
imageView.setImageResource(R.drawable.file);