当我在我的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"/>
答案 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