问题
在设置ImageView的时候,添加了一张图片,图片是正方形的,但是图片要尽大概的占据控件,同时也要包管图片是不能变形的。
然后在图片里面使用了这个scaleType
- <ImageView
- android:id="@+id/iv_luopan"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_centerHorizontal="true"
- android:background="@mipmap/ic_luopan"
- android:scaleType="centerInside" />
复制代码 但是却是没有作用
问题办理
将这个 background 修改为 src 即
- <ImageView
- android:id="@+id/iv_luopan"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_centerHorizontal="true"
- android:src="@mipmap/ic_luopan"
- android:scaleType="centerInside" />
复制代码 ImageView的scaleType属性用于控制图像的缩放方式和表现效果。通过设置不同的scaleType,可以定义图像在ImageView中的表现方式,以适应不同的布局需求。以下是scaleType属性的几种常用值:
- CENTER
形貌: 将图像放置在ImageView的中心,不做任何缩放。
效果: 假如图像比ImageView小,将保持原始大小并居中表现;假如图像大于ImageView,则部分图像会被裁剪。
- CENTER_CROP
形貌: 将图像缩放到足够大,以添补整个ImageView,然后从中心裁剪多余的部分。
效果: 恰当必要添补整个视图的场景,同时保持图像的纵横比。
- CENTER_INSIDE
形貌: 将图像缩放到恰当ImageView,并保持其纵横比。
效果: 图像会尽大概大,但不会超出ImageView的边界。假如图像比ImageView小,则会在ImageView中居中表现。
- FIT_CENTER
形貌: 将图像缩放到足够大以使其完全恰当ImageView,同时保持其纵横比,并居中表现。
效果: 恰当希望图像完整表现的需求,但大概会留下空白区域。
- FIT_XY
形貌: 将图像缩放到完全填满ImageView,不保持图像的纵横比。
效果: 图像大概会变形,因此通常不推荐在必要保持原始比例的情况下使用。
- FIT_START
形貌: 将图像缩放到恰当ImageView,并保持其纵横比,同时将图像对齐到ImageView的顶部或左侧。
效果: 图像将被居中到上方或左侧,底部或右侧大概有空白。
- FIT_END
形貌: 类似于FIT_START,但将图像对齐到底部或右侧。
效果: 图像将被居中到下方或右侧,上方或左侧大概有空白。
- MATRIX
形貌: 使用自定义矩阵来绘制图像,可以进行复杂的变更。
效果: 必要手动设置变更矩阵,恰当高级用户进行自定义操作。
现在还有一个问题,
我要在图片中心表现一个数据,是要在图片中心表现,但是现在图片为了保持缩放比例,进行了限定,假如图片的布局父类是一个长度大于宽度的,或者宽度大于长度的布局,那怎么包管这个文字布局一定能表现在图片布局的中心位置呢?
办理方法
设置一个父类布局
- <RelativeLayout
- android:id="@+id/rv_lay"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_marginTop="@dimen/dp_6"
- android:padding="@dimen/dp_10">
- <ImageView
- android:id="@+id/iv_luopan"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_centerHorizontal="true"
- android:background="@mipmap/ic_luopan" />
- <TextView
- android:id="@+id/tv_luopan_jiaodu"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerInParent="true"
- android:text="--"
- android:textColor="@color/black"
- android:textSize="24sp"
- android:textStyle="bold" />
- </RelativeLayout>
复制代码 不管外面的布局怎么变化,我就包管在这个 RelativeLayout 父类布局里面,图片占满布局,文字在父类布局的中心位置。
然后我们处理这个父类布局,让它的长和宽是相称的。
- rv_lay.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
- @Override
- public void onGlobalLayout() {
- // 移除监听器,避免重复调用
- rv_lay.getViewTreeObserver().removeOnGlobalLayoutListener(this);
- // 获取实际宽高
- int width = rv_lay.getWidth();
- int height = rv_lay.getHeight();
- // 设置宽和高相等
- int size = Math.min(width, height);
- rv_lay.getLayoutParams().width = size;
- rv_lay.getLayoutParams().height = size;
- // 更新布局
- rv_lay.requestLayout();
- }
- });
复制代码 这样就可以包管父类布局的长和宽是相称的了。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |