我遇到了一个问题,即可见性状态为 GONE 的 View (不希望地)占用了屏幕空间。这个问题总是发生在 API 级别 <= 7 的设备上,但最近才发生在 8+ 设备上(在我使用 AsyncTasks 填充一些字段之后,根据 Show a progress bar when an Activity is loading )
一点背景: 我创建了一个扩展 LinearLayout 的自定义 View ,其中包含一个“标题”按钮和(用户定义;在某些情况下,它是一些 TextView,在其他情况下它是 TableLayouts)“内容”。此 View 的目的是在点击标题按钮时切换内容 View (我不相信有一个内置的小部件可以做到这一点。我可能是错的)。
在 onLayout() 中,我明确地将除标题之外的所有 subview 的可见性状态设置为 GONE,这是第一次绘制:
protected void onLayout(boolean changed, int l, int t, int r, int b) {
if(initialDraw) {
setContentsVisible(false);
initialDraw = false;
}
super.onLayout(changed, l, t, r, b);
}
public void setContentsVisible(boolean visible) {
for(int i = 0; i < getChildCount(); i++) {
View child = getChildAt(i);
if(child != mTitle) {
child.setVisibility(visible ? VISIBLE : GONE);
}
}
}
最佳答案
将代码从 onLayout() 移至 onMeasure() 即可解决问题。
关于android - 查看可见性状态 GONE 占用屏幕空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4899389/