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

Android中如何通过代码设置ImageView适配状态栏导航栏且不拉伸?

ImageView适配状态栏/导航栏且图片不拉伸的解决方案

问题场景

  • 设置ImageView背景图片时,图片会铺满状态栏和导航栏,但存在拉伸变形问题,对应布局代码:
<ImageView
    android:id="@+id/imgLoginImageSlider"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/slider2" />
  • 使用Glide加载图片时,图片无法铺满屏幕,上下出现空白,对应加载代码:
Glide.with(context).load(model.getDrawable_img()).into(holder.binding.imgLoginImageSlider);

解决方案

1. 调整ImageView布局属性

修改ImageView的布局参数,确保图片能延伸到状态栏/导航栏,同时保持比例不拉伸:

<ImageView
    android:id="@+id/imgLoginImageSlider"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scaleType="centerCrop"
    android:fitsSystemWindows="false" />
  • scaleType="centerCrop":保持图片宽高比,缩放至完全覆盖ImageView,超出部分裁剪,彻底避免拉伸。
  • fitsSystemWindows="false":关闭系统窗口内边距限制,允许图片铺满状态栏和导航栏所在区域。

2. 配置Glide加载参数

配合ImageView的缩放模式,在Glide加载时设置对应的裁剪选项,确保图片铺满容器:

Glide.with(context)
    .load(model.getDrawable_img())
    .centerCrop()
    .into(holder.binding.imgLoginImageSlider);

3. 确保Activity支持全屏布局(可选)

如果页面需要让图片自然延伸到状态栏/导航栏区域,需给对应Activity配置全屏相关设置:

  • 通过主题配置(在AndroidManifest.xml中):
<activity
    android:name=".YourLoginActivity"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen" />
  • 通过代码动态设置:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    getWindow().setDecorFitsSystemWindows(false);
} else {
    getWindow().getDecorView().setSystemUiVisibility(
        View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
    );
}

内容的提问来源于stack exchange,提问作者Rakesh Saini

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:35:44