我将许多项目相对于布局指南进行定位, 现在想将一个新项目与此布局指南近似定位。
我尝试使用负布局边距,但没有成功。
我将许多项目相对于布局指南进行定位, 现在想将一个新项目与此布局指南近似定位。
我尝试使用负布局边距,但没有成功。
android:translationX="-10dp"
android:translationY="-10dp"
这个答案现在已经过时了。请查看已接受的答案以获取更新。
这里有一篇博客文章讨论了在ConstraintLayout
中使用负边距。
使用Space实现负边距
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,其中包括:
ConstraintLayout
- 支持对约束进行负边距
这意味着现在您可以做一些之前不能做到的事情,例如android:layout_marginTop="-25dp"
!
<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