【发布时间】:2017-08-14 09:05:59
【问题描述】:
我相对于布局指南定位了很多项目, 并希望将新项目放置在与此布局指南几乎相关的位置。
我尝试使用负布局边距但没有成功。
【问题讨论】:
-
您可以尝试将项目限制在该指南的左侧或右侧。这将使该项目几乎相对于布局指南定位。
标签: android android-constraintlayout
我相对于布局指南定位了很多项目, 并希望将新项目放置在与此布局指南几乎相关的位置。
我尝试使用负布局边距但没有成功。
【问题讨论】:
标签: android android-constraintlayout
android:translationX="-10dp"
android:translationY="-10dp"
【讨论】:
这个答案现在已经过时了。请参阅接受的答案以获取更新。
这是一个blog posting,讨论了ConstraintLayout 中的负边距。
对负边距使用空格
ConstraintLayout 中的视图不能有负边距(不支持)。但是,通过一个简单的技巧,您可以通过插入 Space(本质上是一个空视图)并将其大小设置为您想要的边距来获得类似的功能。
【讨论】:
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"之类的事情,这是你以前做不到的!
【讨论】:
您可以使用 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" />
【讨论】:
为兄弟姐妹的位置创建视图可能不是最好的选择,因为视图将被绘制(即使它是不可见的)它仍然会使用资源。
您可以尝试使用指南:
您可以添加可以限制视图的垂直或水平指南,并且该指南将对应用用户不可见。您可以根据相对于布局边缘的 dp 单位或百分比在布局中定位指南。
https://developer.android.com/training/constraint-layout#constrain-to-a-guideline
【讨论】: