在约束布局android中添加填充时,视图会消失

时间:2017-04-14 20:42:19

标签: android android-layout android-constraintlayout constraint-layout-chains

我正在尝试使用ConstraintLayout创建一个包含四个圆圈的垂直链。它渲染得很好,直到我向ConstraintLayout添加填充,此时整个视图都会丢失。

我的布局文件的内容如下

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@android:color/black" />
    <corners android:radius="300dp" />
</shape>

circle.xml

{{1}}

我看到的输出是

Result view with padding

如果我删除

  

机器人:填充= “10dp”

来自ConstraintLayout的

,它按预期工作。

Result view without padding

此外,如果我从圆圈3中删除左右约束,它的工作正常。但是,这是我在我的应用程序中的精简版本。我尝试从circle3中删除左右约束,但它仍然无法正常工作。我需要那里的填充物。如果有人能让我知道为什么它会在这里表现出来,那么它将有助于解决原始问题。

2 个答案:

答案 0 :(得分:1)

尝试不是在布局中定义填充,而是为每个视图定义填充。意思是你移动

android:padding="10dp" 

对于想要填充的任何imageViews

答案 1 :(得分:1)

TL; DR

我发现根据经验,当您想要将视图B放在视图A下方时,请确保A具有constraintTop_toBottomOf =&#34; view_above_me&#34;而不是constraintTop_toTopOf =&#34; view_beside_me&#34;

对我来说问题解决了这样:

您有4个视图:view1,view2a,view2b,view3,使view1位于顶部,view2a和view2b位于其下方,view2b位于view2a右侧,view3位于它们下方。

view1有layout_constraintTop_toTopOf="parent"

view2a有layout_constraintBottom_toTopOf="@id/view1"

view2b有layout_constraintTop_toTopOf="@id/view2a"

view3有layout_constraintTop_toBottomOf="@id/view2b

这会产生问题。解决方案是将view3约束替换为以下内容:layout_constraintTop_toBottomOf="@id/view2a"

请注意,view2b对view2a有一个约束top,而不是view1 bottom,因此padding隐藏了我的view3。