Android:FLAG_TRANSLUCENT_STATUS未提供正确的屏幕高度

时间:2016-11-17 05:49:30

标签: android

在我的应用程序中,我正在显示卡片列表。如果第一张卡片可见,则状态栏半透明且不透明,用于其他列表项目。为实现这一点,我使用了

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

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

1 个答案:

答案 0 :(得分:0)

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

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

            }
});