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

Expo React Native Android端BlurView加载组件的持久化透明覆盖层问题求助

Expo React Native Android端BlurView加载组件的持久化透明覆盖层问题求助

我正在用Expo开发React Native应用,最近在做一个用Expo BlurView实现的加载组件时遇到了头疼的问题。

具体来说,当我为了在Android上测试添加experimentalBlurMethod="dimezisBlurView"后,屏幕上始终有一层透明覆盖层,把原本深灰色的内容都变成浅灰色了。除此之外其他功能都正常:加载状态为true时,组件能正常显示模糊效果;但这个覆盖层的问题一直存在,很影响视觉体验。

我已经尝试过这些解决方案,但都没效果:

  • 条件渲染(根据loading状态直接返回null)
  • 调整BlurView的intensity参数,尝试了不同数值
  • 给BlurView添加pointerEvents="none"属性

我期望的正常行为是:

  • 加载状态激活时,模糊覆盖层正常显示
  • 加载完成(loading为false)时,覆盖层完全消失,不会留下任何残留效果

下面是我的组件代码:

import React from 'react';
import { View, ActivityIndicator, StyleSheet } from 'react-native';
import { BlurView } from 'expo-blur';
import Colors from '@/constants/Colors';

const LoadingOverlay = ({ loading }: { loading?: boolean }) => {
  if (!loading) return null;

  return (
    <View style={styles.container}>
      <BlurView intensity={20} style={styles.blurView} experimentalBlurMethod="dimezisBlurView">
        <View style={styles.loadingBox}>
          <ActivityIndicator size="large" color={Colors.PRIMARY} />
        </View>
      </BlurView>
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    ...StyleSheet.absoluteFillObject,
    zIndex: 999,
  },
  blurView: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
  },
  loadingBox: {
    backgroundColor: Colors.WHITE,
    padding: 20,
    borderRadius: 20,
  },
});

export default LoadingOverlay;

有没有大佬能帮忙排查并解决这个BlurView的渲染问题呀?

备注:内容来源于stack exchange,提问作者toofast

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 09:19:29