Ada*_*dam 7 android android-widget android-layout
我遇到一个问题,其中可见性状态为GONE的视图(不合需要地)占用屏幕上的空间.始终在API级别<= 7设备上出现此问题,但最近仅在8个以上的设备上发生(在我使用AsyncTasks填充某些字段后,根据"加载活动时显示进度条")
一点上下文:我创建了一个扩展LinearLayout的自定义视图,其中包含一个"标题"按钮和(用户定义;在某些情况下,它是一些TextViews,在其他情况下,它是TableLayouts)"contents".这个视图的目的是切换内容onClick标题按钮的视图(我不相信有一个内置的小部件...我可能是错的).
在onLayout()中,我明确地将所有子视图的可见性状态设置为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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
好的。我根本不明白它是如何在你的情况下吸引任何东西的。但我认为你应该在检查后调用 super.onLayout() 。像这样:
protected void onLayout(boolean changed, int l, int t, int r, int b) {
if(initialDraw) {
setContentsVisible(false);
initialDraw = false;
}
super.onLayout(l,t,r,b);
}
Run Code Online (Sandbox Code Playgroud)
LinearLayout 决定如何在 onLayout() 中布局它的子级(垂直或水平),但您没有调用它。更重要的是,选择后,它实际上开始计算如何布局每个子项,如果子项的可见性消失,它会跳过它(意味着子项不会占用任何空间)。我认为在你的情况下,根本不会布置和展示任何孩子,但我可能在某个地方错了。
| 归档时间: |
|
| 查看次数: |
1704 次 |
| 最近记录: |