Android-图片AppCompatImageView(ImageView)自适应比例

描述
在课程首页开发过程中,遇到一个问题,课程标签需要固定高度,宽度自适应,当时没有实现出来,现在从 同事@吴锋 处了解到,这个可以轻松实现,此处记录一下,下次遇到类似需求可以应用

控件:
AppCompatImageView(ImageView)


属性:
android:adjustViewBounds


属性值:
布尔值(boolean)
<attr name="adjustViewBounds" format="boolean" />


使用目的:
加载图片时,固定宽度,高度按比例自适应,或固定高度,宽度自适应


使用前提:
宽高有且仅有一个设置为 “wrapContent”
build.gradle中设置targetSdkVersion23以上

defaultConfig {
    targetSdkVersion 23
}


代码动态设置:

imgView.setAdjustViewBounds(true);

相关源码
 

    @android.view.RemotableViewMethod
    public void setAdjustViewBounds(boolean adjustViewBounds) {
        mAdjustViewBounds = adjustViewBounds;
        if (adjustViewBounds) {
            setScaleType(ScaleType.FIT_CENTER);
        }
    }

这里可以看出,设置了  android:adjustViewBounds="true"  之后,scaleType默认就设置成了“ScaleType.FIT_CENTER”,所以在xml文件中不需要再设置scaleType了

END
 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio中,要让图片自适应ImageView,你可以使用`ImageView`的`scaleType`属性来设置图片缩放的方式,这样图片可以根据容器(ImageView)的大小进行调整。以下是几种常见的自适应图片布局方式: 1. `FitCenter`:保持图片的中心,拉伸或压缩图片以完全填充ImageView。 ```xml <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="fitCenter" /> ``` 2. `FitStart` 或 `Start`:图片ImageView的左上角开始,保持原始比例,填充剩余空间。 ```xml <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="fitStart" /> ``` 3. `FitEnd` 或 `End`:图片ImageView的右下角开始,保持原始比例,填充剩余空间。 ```xml <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="fitEnd" /> ``` 4. `CenterCrop`:保持图片的宽高比,将图片居中裁剪,使其完全填充ImageView。 ```xml <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="centerCrop" /> ``` 5. `CenterInside`:保持图片的宽高比,将图片居中,不改变原始尺寸,只填充ImageView内部空间。 ```xml <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="centerInside" /> ``` 6. `Matrix`:允许对图片进行更复杂的变换,如旋转、缩放和倾斜。 每种缩放类型都有其适用场景,确保根据实际需求选择合适的`scaleType`。如果你想要在代码中动态设置,可以在Java或Kotlin中这样做: ```java ImageView imageView = findViewById(R.id.imageView); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); // 设置为自适应类型 ``` 如果你需要更灵活的自适应策略,可以考虑使用`ConstraintLayout`或者`AspectRatioFrameLayout`等高级布局。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值