0

编辑:部分答案

如果在 xml 中设置了两个维度,则它的行为与预期一样,例如

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>

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

最好的祝福

4

3 回答 3

6

发生这种情况是因为我在您之前的问题中提供的原因 https://stackoverflow.com/a/10183799/1244489

当您调用 getWidth() 和 getHeight() 时,它会返回 ImageView 的大小,如果您观察到,则在您的情况下是全屏大小。您的源图像已缩小以适应屏幕,保持其纵横比,但 ImageView 没有缩小。要将其缩小到图像大小,您需要提供参数

机器人:adjustViewBounds =“真”

在您的 ImageView 中。

于 2012-04-17T01:21:43.900 回答
1

在这里找到答案: Fit image into ImageView, keep aspect ratio and then resize ImageView to image dimensions?

这是问题的根源:ImageView 自身的大小不符合图像尺寸,所以我们必须自己调整大小:

LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) imageView.getLayoutParams(); 
params.width = width;
params.height = height;
imageView.setLayoutParams(params);
于 2012-04-20T11:30:44.707 回答
0

因为getWidth()getHeight()是从作为View屏幕尺寸的层次结构中调用的。事实上,如果图像是使用ImageView'fitCenter 等 s 比例类型缩放的,那么您得到的尺寸将与图像完全不匹配。它们将保留整个视图的像素宽度和像素高度,而不仅仅是图像占用的内容。

于 2012-04-16T19:31:02.800 回答