Android应用按系统返回键后背景图片显示异常求助
问题:按下系统返回键后背景图片无法铺满屏幕
我用Android Studio开发应用,做了个BackgroundActivity用来选择背景。用自定义导航按钮切换时一切正常,但从BackgroundActivity按系统返回键回到主界面后,背景图片会缩小,没法铺满整个屏幕。试过在onResume()里重置背景并调用invalidate(),但没解决问题。
相关代码
布局文件
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/imgBg" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="fitXY" android:background="@drawable/background0" /> <androidx.constraintlayout.widget.ConstraintLayout ... </FrameLayout>
onResume()方法
@Override protected void onResume() { super.onResume(); //Gestione sfondo ImageView bg = findViewById(R.id.imgBg); bg.setBackground(MainActivity.bgs.getActive()); bg.invalidate(); }
状态表现
- 初始打开:背景正常铺满屏幕
- 更换背景后:背景正常铺满屏幕
- 按系统返回键后:背景缩小,无法铺满屏幕
解决方案
1. 改用src属性替代background
ImageView的scaleType只对src设置的图片生效,对background无效,这是核心问题。
修改布局:
<ImageView android:id="@+id/imgBg" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="fitXY" android:src="@drawable/background0" />
修改onResume():
@Override protected void onResume() { super.onResume(); ImageView bg = findViewById(R.id.imgBg); bg.setImageDrawable(MainActivity.bgs.getActive()); }
2. 强制视图重新布局(如果坚持用background)
如果不想改布局,可在onResume()里触发视图重新测量和布局:
@Override protected void onResume() { super.onResume(); ImageView bg = findViewById(R.id.imgBg); bg.setBackground(MainActivity.bgs.getActive()); bg.requestLayout(); // 替代invalidate,强制重新布局 }
3. 检查主题配置
确保当前Activity的主题没有设置android:windowBackground,避免和ImageView的背景冲突,导致返回时视图尺寸异常。
内容的提问来源于stack exchange,提问作者Leonardo Zanoni
相关产品推荐
相关产品推荐

