2012-04-16 124 views
0

编辑:部分答案

如果两个维度在XML设置,其行为与预期相同,例如错误ImageView的尺寸

android:layout_width="250dp" 
android:layout_height="250dp" 

如果一个人留下来WRAP_CONTENT,事实并非如此。

原贴

这里是我的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="match_parent" 
android:orientation="horizontal" > 

<ImageView 
android:id="@+id/board" 
android:layout_width="wrap_content" 
android:layout_height="match_parent" 
android:src="@drawable/board" /> 

</LinearLayout> 

为什么我在屏幕上看到的图像有正确的尺寸(屏幕高度×屏幕高度,因为它是一个正方形的位图,我设置match_parent为高度),但如果我调用ImageView.getWidth()和ImageView.getHeight()它给我的屏幕尺寸?

问候

回答

0

因为getWidth()getHeight()View层次它们的屏幕尺寸调用。事实上,如果图像是使用像fitCenter那样的ImageView'的缩放比例缩放的,则您获得的尺寸根本不匹配图像。它们将保持整个视图的像素宽度和像素高度,而不仅仅是图像占用的内容。

+0

为什么由于wrap_content被设置,所以视图比图像大?你能解释一下吗?非常感谢。 – pouzzler 2012-04-16 19:35:24

+0

这是'ImageView'缩放的方式,以便用'match_parent'来适应高度。您使用的图片比您要填充的尺寸要大。默认情况下,它设置为居中图像并适合它,以便显示所有内容。它会缩小你的图像。这就是为什么我说整个View的像素尺寸与显示图像的像素尺寸不同。 – DeeV 2012-04-16 19:48:34

5

发生这种情况,因为我之所以在这里你刚才的问题 https://stackoverflow.com/a/10183799/1244489

提供了当你调用的getWidth()和getHeight(),它返回你的ImageView的大小,而你的情况,如果你观察是全屏尺寸。您的源图像已缩小以适合屏幕保持其纵横比,但ImageView不会缩小。若要将其缩小图像尺寸,您需要提供的参数

机器人:在您的ImageView adjustViewBounds = “真”

+0

高度和宽度仍等于屏幕的高度和宽度。感谢所有的帮助。 – pouzzler 2012-04-17 10:23:15

+0

想要解决这个问题,因为它在很多场合困扰了我。你有解决它吗? – Shubhayu 2012-04-17 10:45:56

+0

您可以尝试在ImageView中添加以下2个参数:android:scaleType =“fitCenter”和android:adjustViewBounds =“true”。此外,请检查是否以编程方式在代码中设置ImageView的任何值。 – Shubhayu 2012-04-17 10:49:15