Android开发如何在大尺寸ImageView中保持vector drawable原尺寸居中?
问题原因
你当前实现的问题出在没有显式指定ImageView的scaleType属性:
Android ImageView默认的缩放类型是fitCenter,该模式会将drawable等比例缩放至完全适配ImageView的边界后居中显示,因此你尺寸为24dp的矢量图会被放大到适配200dp的ImageView高度,才出现了非预期的放大效果。
解决方法
给ImageView添加android:scaleType="center"属性即可,该属性的作用是保持drawable的原始尺寸,不做任何缩放,直接在ImageView内部居中显示,刚好符合你的需求。
修改后的完整代码如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="match_parent" android:layout_height="200dp" android:src="@drawable/the_image_drawable" android:scaleType="center" /> </LinearLayout>
补充说明
如果存在矢量图实际尺寸大于当前ImageView尺寸的场景,也可以改用android:scaleType="centerInside",该模式会在drawable尺寸大于ImageView时自动缩小到适配边界,尺寸小于ImageView时保持原始大小居中显示,适配性更强。
内容的提问来源于stack exchange,提问作者Jim
相关产品推荐
相关产品推荐

