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

全屏模式(无状态栏/导航栏)下无法在屏幕底角绘制矩形问题

解决全屏模式下无法在屏幕底角绘制矩形的问题

我来帮你拆解这个问题的根源,然后给出具体的解决方案:

问题核心原因

你当前使用的getDefaultDisplay().getSize()方法,返回的是应用窗口的可用区域尺寸——也就是系统状态栏/导航栏被隐藏后,留给应用的显示区域大小,并非屏幕的真实物理全尺寸。哪怕你设置了全屏模式,部分设备仍会在底层保留虚拟导航栏的预留空间,导致你用maxY计算的位置始终停留在这个预留区上方,无法触达真正的屏幕底角。

解决方案1:获取屏幕真实物理尺寸

改用getRealSize()(API 17+)或getRealMetrics()方法获取屏幕的完整尺寸,这样就能拿到真正的屏幕高度,精准定位到底角:

代码示例(API 17+)

Display mdisp = getWindowManager().getDefaultDisplay();
Point realDisplaySize = new Point();
// 获取屏幕真实全尺寸
mdisp.getRealSize(realDisplaySize);
int realMaxX = realDisplaySize.x;
int realMaxY = realDisplaySize.y;

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    // 使用真实屏幕高度计算矩形位置
    canvas.drawRect(0, realMaxY - pixel, pixel, realMaxY);
}

兼容低版本(API <17)

如果需要兼容更早的Android版本,可以用DisplayMetrics:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
int realMaxX = metrics.widthPixels;
int realMaxY = metrics.heightPixels;

解决方案2:确保Activity完全进入沉浸式全屏

有时候全屏设置未完全生效,系统仍会预留导航栏空间。可以在onCreate()中添加以下配置,让窗口完全延伸到屏幕所有区域:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    // 开启沉浸式全屏,隐藏状态栏和导航栏
    getWindow().getDecorView().setSystemUiVisibility(
        View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
        | View.SYSTEM_UI_FLAG_FULLSCREEN
        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
    );
    
    // 允许窗口布局延伸到系统栏所在区域
    getWindow().setFlags(
        WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
        WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
    );
    
    setContentView(R.layout.your_activity_layout);
}

结合这两个方案,你就能让矩形精准显示在屏幕的底部角落了。

内容的提问来源于stack exchange,提问作者Deepanshu Namdeo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:50:40