我正在创建由项目列表组成的屏幕。每个项目由2个ImageView组成,一个重叠在另一个之上。一个是图标,另一个是图像。我们可以看到这两个视图,但图像覆盖了图标的右下角部分。
实现这一点不是问题,但想知道什么是标准/最好的解决方案在android世界现在的这种情况下。Android建议使用constraintLayout几乎在任何地方,你可以和所有其他的东西,如相对布局落在阴影。
在本例中,在提出问题之前,我计划在constraintLaout中使用负边距来设置图标上的图像:
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<ImageView
android:id="@+id/orderNumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:src="@drawable/ic_star_big"/>
<ImageView
android:layout_width="130dp"
android:layout_height="200dp"
app:layout_constraintLeft_toRightOf="@id/orderNumber"
app:layout_constraintTop_toBottomOf="@id/orderNumber"
android:src="@color/black"
android:layout_marginTop="-10dp"
android:layout_marginStart="-15dp"/>
</androidx.constraintlayout.widget.ConstraintLayout>
这是最好的方法吗?它有失败吗?有更好的方法来实现这一点吗?
1条答案
按热度按时间8i9zcol21#
在做了一些研究之后,我的结论是,现在还不是我们可以说某种方法应该成为这种情况的标准的时候。
但要补充的是,负边距在ConstraintLayout中可用的时间更长,并且对于这种情况是完全可靠的解决方案。尝试过了,效果很好。
重要提示:请记住这一点。我的代码可以更改为不使用负边距。我们可以将第二个视图的约束添加到父视图,然后使用正常边距来实现视图重叠的相同情况,而不是对第一个视图进行约束。现在的代码如下所示:
我知道这看起来很明显,但是当你开始工作的时候就不一定了。就是这样,快乐的编码!