我相对于布局指南定位了很多项目, 并希望几乎相对于此布局指南定位一个新项目。
我尝试使用负布局边距但没有成功。
答案 0 :(得分:13)
android:translationX="-10dp"
android:translationY="-10dp"
答案 1 :(得分:11)
以下blog posting讨论了ConstraintLayout
中的负边距。
将空格用于负边距
ConstraintLayout中的视图不能有负边距(不支持)。但是,通过简单的技巧,您可以通过插入Space(实际上是一个空视图)并将其大小设置为您想要的边距来实现类似的功能。
答案 2 :(得分:7)
已于 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 :(得分:1)
使用 NEGATIVE MARGIN 是不好的做法。
ConstraintLayout 是一个ViewGroup,它允许您灵活地定位和调整小部件的位置。
请注意,保证金只能为正或等于零.ConstraintLayout不能有负边距。
您可以使用
- 机器人:layout_marginStart
- 机器人:layout_marginEnd
- 机器人:layout_marginLeft
- 机器人:layout_marginTop
- 机器人:layout_marginRight
- 机器人:layout_marginBottom
答案 4 :(得分:1)
您可以使用“视图”来保存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 :(得分:0)
创建一个用于定位您的兄弟姐妹位置的视图可能不是最好的选择,因为该视图将被绘制(即使它是不可见的),它将仍然使用资源。
您可以改用准则:
您可以添加可以限制视图的垂直或水平参考线,并且该参考线对应用程序用户不可见。您可以根据dp单位或相对于版面边缘的百分比在版面中定位参考线。
https://developer.android.com/training/constraint-layout#constrain-to-a-guideline