android adjustViewBounds错误?

时间:2012-06-06 15:30:42

标签: android imageview

当我在我的imageView xml中使用android:adjustViewBounds =“true”时,它不起作用。如果我把setAdjustViewBounds(true);在我的ImageView的构造函数中,它工作正常。有什么区别,或者这是一个错误?

<ImageView
                android:id="@+id/PageViewMainImage"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:scaleType="matrix"     
                android:adjustViewBounds="true"               
                android:visibility="invisible"/>

1 个答案:

答案 0 :(得分:16)

ImageView构造函数(see source here)中的操作顺序在解析并从XML设置adjustViewBounds属性之前解析并设置XML的scaleType属性。部分setAdjustViewBounds()方法(由构造函数使用您的XML属性值调用)是在值为true时将ScaleType设置为FIT_CENTER

因此,当您发布的XML已加载时,ScaleType首先设置为FIT_CENTER,然后在构造函数内部重新设置为MATRIX。将此与您在Java中调用setAdjustViewBounds()的示例进行比较,现在最终ScaleType将为FIT_CENTER,因为您的Java调用将在解析XML属性后发生(实际上意味着您的{ {1}}属性被忽略。这种差异很可能是你所看到的&#34;工作&#34;和&#34;没有工作&#34;。

我不确定Google是否会将其称为错误,因为他们只是将android:scaleType="matrix"设置为他们认为您想要的内容以方便保留方面,但仍然允许您修改此。视图本身的边界仍会随着属性名称的指示而改变,图像可能会以您不期望的方式剪辑。

在这个&#34;功能&#34;上,文档可能会更清晰。但是,您可以在http://b.android.com

提交错误报告

HTH