Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 可见性状态消失的视图占用屏幕空间_Android_Android Widget_Android Layout - Fatal编程技术网

Android 可见性状态消失的视图占用屏幕空间

Android 可见性状态消失的视图占用屏幕空间,android,android-widget,android-layout,Android,Android Widget,Android Layout,我遇到一个问题,即可见性状态为“已消失”的视图(不希望)占用屏幕空间。此问题始终发生在API级别Ok上。我一点也不明白在你的情况下它是如何吸引你的。但我认为你应该在结账后打电话给super.onLayout()。像这样: protected void onLayout(boolean changed, int l, int t, int r, int b) { if(initialDraw) { setContentsVisible(false); ini

我遇到一个问题,即可见性状态为“已消失”的视图(不希望)占用屏幕空间。此问题始终发生在API级别Ok上。我一点也不明白在你的情况下它是如何吸引你的。但我认为你应该在结账后打电话给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);
}
LinearLayout决定如何在onLayout()中布局它的子项(垂直或水平),而您没有调用onLayout()。更重要的是,在选择之后,它实际上开始计算如何布局每个子对象,如果子对象的可见性消失,它将跳过它(意味着子对象不会占用任何空间)。
我想在你的情况下,根本不会有孩子被摆出来展示,但我可能在某个地方错了。

我怀疑你让你的生活变得不必要的困难。将视图的可扩展部分(包含少量文本视图或表格布局的非标题位)归属于单个容器视图-框架布局似乎是一种可能的选择-只需调用
setVisibility()


不需要循环,而且您肯定不想从onLayout()执行循环。。。只需从标题的
onClick()

将代码从onLayout()移动到onMeasure()即可解决问题。

哇。这是一个复制粘贴错误,我确实调用super.onLayout()。这是一种方法。事实上,这会更干净一些。。有没有办法强制内容只有一个视图(即XML布局文件中只有一个子视图)?
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);
}