ImageView设置属性android:adjustViewBounds=“true”,用于保持显示的图片的宽高比例不变,即:当宽度/高度变化之后,高度/宽度根据图片本身的宽高比而变化。
网上关于ImageView adjustViewBounds属性的文章不少,很多都说android:adjustViewBounds="true"属性要结合maxWidth和maxHeight一起使用。实践是检验真理的唯一标准,本猿特意用demo测试了下,发现并非如此。
测试代码如下:
//布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">
<ImageView
android:id="@+id/iv"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:src="@drawable/test_drawable"
android:background="@color/colorAccent"/>
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:textAllCaps="false"
android:text="width+5"/>
</RelativeLayout>
//代码
//点击Button,width增加5。
mImageView = findViewById(R.id.iv);
mButton = findViewById(R.id.btn);
mButton.setOnClickListener(this);
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn:
changeWidth();
break;
default:
break;
}
}
private void changeWidth() {
ViewGroup.LayoutParams layoutParams = mImageView.getLayoutParams();
layoutParams.width += 5;
mImageView.setLayoutParams(layoutParams);
}
未点击button时的效果:
多次点击button之后的效果:
注意:
如果在ImageView的布局设置固定宽高,则变化无效。
亲测宽高固定数值:
android:layout_width="60dp"
android:layout_height="40dp"
多次点击后:
如有不周之处,欢迎评论区指出哦。周末愉快~