在我的应用程序中,我正在显示卡片列表。如果第一张卡片可见,则状态栏半透明且不透明,用于其他列表项目。为实现这一点,我使用了
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
它正在移动屏幕,我没有获得正确的屏幕高度。我已将列表项高度设置为匹配父项,但getHeight将高度值作为屏幕高度返回 - 状态栏高度。
答案 0 :(得分:0)
在Window视图上设置TreeObserver对我有用。添加FLAG_TRANSLUCENT_STATUS后,添加了树观察器并在其中设置了父视图填充,它调用了父视图的onLayout方法并正确绘制了布局
getWindow().getDecorView().getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout() {
}
});