【问题标题】:Android: FLAG_TRANSLUCENT_STATUS is not providing correct screen heightAndroid:FLAG_TRANSLUCENT_STATUS 未提供正确的屏幕高度
【发布时间】:2016-11-17 05:49:29
【问题描述】:

在我的应用程序中,我正在显示卡片列表。如果第一张卡片可见,则状态栏对于其他列表项是半透明和非半透明的。为此,我使用了

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

它正在移动屏幕,我没有得到正确的屏幕高度。我已将列表项高度设置为匹配父项,但 getHeight 将高度值返回为屏幕高度 - 状态栏高度。

【问题讨论】:

  • 添加 FLAOG_TRANSLUCENT_STATUS 后,一旦屏幕尺寸变为全屏,我需要一些回调,以便我可以修改视图填充。我的问题是,添加窗口标志后,我正在更改调用 onLayout 方法的视图填充。在这里我没有得到正确的屏幕高度(它总是返回屏幕高度 - 状态栏高度)

标签: android


【解决方案1】:

在窗口视图上设置 TreeObserver 对我有用。添加 FLAG_TRANSLUCENT_STATUS 后,添加树观察者并在其中设置已调用父视图的 onLayout 方法并正确绘制布局的父视图填充

getWindow().getDecorView().getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            public void onGlobalLayout() {

            }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 2019-05-04
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多