Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.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 Constraintlayout - Fatal编程技术网

Android 如何将视图约束在可切换可见性的两个视图下方?

Android 如何将视图约束在可切换可见性的两个视图下方?,android,android-constraintlayout,Android,Android Constraintlayout,图aConstraintLayout包括三个垂直堆叠的项目: @+id/top @+id/middle1 or @+id/middle2 (one gets View.VISIBLE, one gets View.GONE) @+id/bottom @+id/middle1和@+id/middle2的顶部被限制在@+id/top的底部,这里没有问题 有趣的例子是@+id/bottom。应始终将其放置在@+id/middle1或@+id/middle2的下方,具体取决于哪一个是可见的(另一个将获

图a
ConstraintLayout
包括三个垂直堆叠的项目:

@+id/top
@+id/middle1 or @+id/middle2 (one gets View.VISIBLE, one gets View.GONE)
@+id/bottom
@+id/middle1
@+id/middle2
的顶部被限制在
@+id/top
的底部,这里没有问题


有趣的例子是
@+id/bottom
。应始终将其放置在
@+id/middle1
@+id/middle2
的下方,具体取决于哪一个是可见的(另一个将获得
视图。消失了
)。有没有办法在布局文件中对此进行建模,或者在显示
@+id/middle1
@+id/middle2
之间切换时,我是否必须更改
@+id/bottom
的顶部约束?

根据Commonware的建议,可以使用
障碍物
进行如下操作:

 <androidx.constraintlayout.widget.Barrier
          android:id="@+id/barrier"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          app:barrierDirection="bottom"
          app:barrierAllowsGoneWidgets="false"
          app:constraint_referenced_ids="middle1,middle2" />

或例如,在Youtube视频上

尝试在
middle1
middle2
的底部边缘设置一个
屏障
,然后将
底部的顶部
约束到该
屏障
。作为一种通用的响应,它几乎在布局引擎中普遍起作用,您也可以将
middle1
middle2
放在
middlecontainer
视图中。因此,
middlecontainer
仅表示中间内容占用的相对空间,而
middle1
middle2
表示实际占用该空间的当前内容<代码>底部
将放置在
中间容器
下方。也就是说,不同的布局引擎也提供了完成相同任务的其他方法,有时是以更干净的方式,例如屏障(如Commonware所述)@Commonware非常有效,至少在我发现引用屏障中的组不会导致错误消息,但simple不起作用之后。需要直接引用单个视图。你能发布答案吗?@nerdizle谢谢,我也这么想,但这增加了布局的复杂性,你的布局也不再是平面的了。因此,我很高兴至少对于
ConstraintLayout
有一个优化的解决方案:-)@stefan.at.wpf:如果你能让它工作,我建议你回答你自己的问题,因为你面前有工作代码,而我没有。:-)