You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Glide加载图片后BottomSheet消失的问题及解决咨询

解决Glide加载图片导致BottomSheet消失的问题

嘿,我之前也踩过这个坑!核心原因是Glide加载完图片后,ImageView的尺寸发生了变化,触发了requestLayout(),而BottomSheet的Behavior会因为布局重绘重新计算自身状态,最终导致意外收起甚至消失。下面给你几个按优先级排序的可行方案:

1. 固定ImageView尺寸(最推荐)

直接在bottom_sheet_item.xml里给ImageView设置固定宽高,或者用约束布局锁死它的尺寸,这样图片加载后只会缩放适配ImageView,不会改变容器大小,自然就不会触发布局重排。

比如修改你的ImageView标签:

<ImageView
    android:id="@+id/bottom_sheet_image"
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:scaleType="centerCrop" <!-- 确保图片适配View,不撑大容器 -->
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"/>

2. 让Glide强制加载指定尺寸的图片

如果不想固定ImageView的布局尺寸,可以在Glide加载时用override()方法指定图片的目标尺寸,让Glide提前把图片缩放到对应大小,避免加载后ImageView因图片尺寸变化重排:

Glide.with(this)
     .load(yourImageUrl)
     .override(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)
     // 也可以指定具体数值,比如override(200,200)
     .into(bottomSheetImageView);

3. 延迟加载,等BottomSheet稳定后再加载

如果必须让ImageView自适应尺寸,可以监听BottomSheet的状态,等它完全展开并稳定后再执行图片加载:

BottomSheetBehavior<ConstraintLayout> bottomSheetBehavior = BottomSheetBehavior.from(bottomSheetView);
bottomSheetBehavior.addOnStateChangedListener(new BottomSheetBehavior.OnStateChangedListener() {
    @Override
    public void onStateChanged(@NonNull View bottomSheet, int newState) {
        if (newState == BottomSheetBehavior.STATE_EXPANDED) {
            // 此时BottomSheet已完全展开,安全加载图片
            Glide.with(MainActivity.this)
                 .load(yourImageUrl)
                 .into(bottomSheetImageView);
            // 只需要加载一次的话,这里可以移除监听
            bottomSheetBehavior.removeOnStateChangedListener(this);
        }
    }
});

4. 禁止ImageView触发requestLayout(谨慎使用)

极端情况下可以强制让ImageView不触发requestLayout(),但这可能导致图片显示异常等问题,仅作为最后备选:

bottomSheetImageView.setWillNotRequestLayout(true);

建议先尝试第一种方案,它最稳妥且能覆盖大多数场景;如果你的业务需要ImageView自适应,再考虑后面的方法。

内容的提问来源于stack exchange,提问作者Roma Heshten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:56:36