Android中ImageView.ScaleType中文释义

本文详细介绍了Android中ImageView的ScaleType属性及其各种模式,包括矩阵绘制、精确匹配、中心对齐、中心裁剪等,帮助开发者更好地利用这些属性进行图片布局与展示。

所属视图:android.widget.ImageView

配合属性:ImageView的src属性,ScaleType属性对background无效

ScaleType.MATRIX|android:scaleType="matrix":用matrix来绘制图片。

ScaleType.FIT_XY|android:scaleType="fitXY":将图片按照指定的大小精确匹配,这会修改图片原始宽高比例,有可能导致图片变形,在此模式下视图的src和background设置的图片的尺寸是等效的。

ScaleType.FIT_START|android:scaleType="fitStart":将图片的宽度按照原始尺寸比例扩大(缩小)到View的宽度,显示的图片从视图的左上部开始排列。

ScaleType.FIT_CENTER|android:scaleType="fitCenter":将图片的宽度按照原始尺寸比例扩大(缩小)到View的宽度,显示的图片位于视图中部。

ScaleType.FIT_END|android:scaleType="fitEnd":将图片的宽度按照原始尺寸比例扩大(缩小)到View的宽度,显示的图片从视图的右下部开始排列。

ScaleType.CENTER|android:scaleType="center":以ImagView的几何中心点为基准,按图片的原来size居中显示,不扩大(缩小);当图片长/宽超过View的长/宽,则裁切图片的居中部分size显示在ImageView中;当图片小于View 的长宽时,只显示图片的size,不裁切。

ScaleType.CENTER_CROP|android:scaleType="centerCrop":按比例统一缩放图片(保持图片的尺寸比例)便于图片的两维(宽度和高度)等于或大于相应的视图维度。然后图片居中于视图。在XML中,使用语法:android:scaleType="centerCrop",效果等价于ScaleType.FIT_XY,目前没看出有什么区别。

ScaleType.CENTER_INSIDE|android:scaleType="centerInside":以ImagView的几何中心点为基准,将图片的内容完整居中显示,通过等比例缩小原图的size使得图片长(宽)等于或小于ImageView的长(宽)。


我在给一个布局添加提示图标,但是切换RTL后图标不见了,该怎么改 private fun addTipsIcon() { if (tipsIcon == null) { return } var thisClass: Class<Any>? = this.javaClass while (thisClass?.name != TextInputLayout::class.java.name) { if (thisClass?.name == LinearLayout::class.java.name) { break } thisClass = thisClass?.superclass } try { val field: Field? = thisClass?.getDeclaredField("collapsingTextHelper") field?.isAccessible = true val collapsingTextHelper: CollapsingTextHelper = field?.get(this) as CollapsingTextHelper collapsingTextHelper.maxLines = 2 //calculateCollapsedTextWidth已经被替换为collapsedTextWidth 1.5.0-alpha05 val fieldWidth: Field? = collapsingTextHelper.javaClass.getDeclaredField("collapsedTextWidth") fieldWidth?.isAccessible = true val labelWidth = fieldWidth?.getFloat(collapsingTextHelper)?.toInt() collapsingTextHelper.getCollapsedTextActualBounds(bounds, labelWidth ?: 0, collapsingTextHelper.collapsedTextGravity) // 将 imageView 添加到 TextInputLayout 中 post {//Fix在recycleView里不展示的问题 if (isAttachedToWindow && labelImageView.parent == null) { labelImageView.layoutParams = FrameLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT) labelImageView.scaleType = ImageView.ScaleType.CENTER val inputFrame = getChildAt(0) as FrameLayout inputFrame.addView(labelImageView) labelImageView.wrapAccessibilitySize() } } val leftPadding = (8 * resources.displayMetrics.density + 0.5f).toInt() labelImageView.x = bounds.right - leftPadding // 获取imageView的高度 labelImageView.measure(0, 0) labelImageView.y = bounds.top + (bounds.height() - labelImageView.measuredHeight) / 2 } catch (e: Exception) { e.printStackTrace() } }
最新发布
12-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值