android adjustViewBounds错误?

Fra*_*ank 4 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"/>
Run Code Online (Sandbox Code Playgroud)

Dev*_*red 16

ImageView构造函数中的操作顺序(请参阅此处的源代码)在解析并adjustViewBounds从XML 设置属性之前解析并设置scaleTypeXML属性.该部分setAdjustViewBounds()的方法(这是由你的XML属性值的构造方法调用)是设置ScaleTypeFIT_CENTER时该值为true.

因此,当您发布的XML被加载时,ScaleType首先将其设置为FIT_CENTER然后重新设置为MATRIX构造函数内的所有内容.将此与您setAdjustViewBounds()在Java 中调用的示例进行比较,现在最终ScaleType将是FIT_CENTER在解析XML属性后将发生Java调用(实际上意味着您的android:scaleType="matrix"属性被忽略.这种差异很可能是您在"工作"之间看到的并且"不起作用".

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

尽管如此,文档在这个"功能"上可能会更加明确,因此您可以在http://b.android.com上提交错误报告

HTH

  • AdjustViewBounds不会扩展超过bmp的自然大小.如果您的bmp是50x50,那么您可以从中获得最多,那么您将无法在200x200窗口中获得缩放图像.要解决此问题,您需要提供比窗口大的bmp,​​以便它可以缩小. (3认同)