【问题标题】:android ConstraintLayout does not allow negative marginsandroid ConstraintLayout 不允许负边距
【发布时间】:2017-08-14 09:05:59
【问题描述】:

我相对于布局指南定位了很多项目, 并希望将新项目放置在与此布局指南几乎相关的位置。

我尝试使用负布局边距但没有成功。

【问题讨论】:

  • 您可以尝试将项目限制在该指南的左侧或右侧。这将使该项目几乎相对于布局指南定位。

标签: android android-constraintlayout


【解决方案1】:
android:translationX="-10dp"
android:translationY="-10dp"

【讨论】:

  • 哇哦!那是一回事
  • 对于 2.1.0 的 alpha 更新之前的约束布局,这个答案非常有效!!
【解决方案2】:

这个答案现在已经过时了。请参阅接受的答案以获取更新。



这是一个blog posting,讨论了ConstraintLayout 中的负边距。

对负边距使用空格

ConstraintLayout 中的视图不能有负边距(不支持)。但是,通过一个简单的技巧,您可以通过插入 Space(本质上是一个空视图)并将其大小设置为您想要的边距来获得类似的功能。

【讨论】:

  • 所以他们更好地支持负边距。它会创建更少的视图。 ContraintLayout 就是这样。
  • 解决方案建议一个视图空间。我希望应该使用guildeline而不是空格
【解决方案3】:

2020 年 12 月 17 日,在 ConstraintLayout 2.1.0 alpha 2 中添加了对在 ConstraintLayout 中设置负边距的支持。

您可以通过将依赖项设置为来更新它:

implementation 'androidx.constraintlayout:constraintlayout:2.1.0-alpha2'

完整的变更日志可在此处获得:https://androidstudio.googleblog.com/2020/12/constraintlayout-210-alpha-2.html,其中包括:

约束布局

  • 支持约束的负边距

这意味着现在你可以做android:layout_marginTop="-25dp"之类的事情,这是你以前做不到的!

【讨论】:

  • 耗时3年4个月?
【解决方案4】:

您可以使用 View 来保存固定值,例如 30dp,如下所示:

 <com.mapbox.mapboxsdk.maps.MapView
    android:id="@+id/mapView"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_marginTop="45dp"
    app:layout_constraintBottom_toBottomOf="@id/space"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:mapbox_uiRotateGestures="false" />

<View
    android:id="@+id/space"
    android:layout_width="match_parent"
    android:layout_height="30dp"
    app:layout_constraintTop_toBottomOf="parent" />

【讨论】:

    【解决方案5】:

    为兄弟姐妹的位置创建视图可能不是最好的选择,因为视图将被绘制(即使它是不可见的)它仍然会使用资源。

    您可以尝试使用指南:

    您可以添加可以限制视图的垂直或水平指南,并且该指南将对应用用户不可见。您可以根据相对于布局边缘的 dp 单位或百分比在布局中定位指南。

    https://developer.android.com/training/constraint-layout#constrain-to-a-guideline

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-18
      • 2017-03-07
      • 2022-08-12
      • 2011-08-10
      • 2019-12-12
      • 1970-01-01
      • 1970-01-01
      • 2020-08-18
      相关资源
      最近更新 更多