我在页面上阅读过页面,但是我仍然遇到多个屏幕的布局问题。 我有一个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'
怎么了?
答案 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);