Android 2 ImageViews重叠最佳解决方案

ql3eal8s  于 2022-11-03  发布在  Android
关注(0)|答案(1)|浏览(230)

我正在创建由项目列表组成的屏幕。每个项目由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>

这是最好的方法吗?它有失败吗?有更好的方法来实现这一点吗?

8i9zcol2

8i9zcol21#

在做了一些研究之后,我的结论是,现在还不是我们可以说某种方法应该成为这种情况的标准的时候。
但要补充的是,负边距在ConstraintLayout中可用的时间更长,并且对于这种情况是完全可靠的解决方案。尝试过了,效果很好。
重要提示:请记住这一点。我的代码可以更改为不使用负边距。我们可以将第二个视图的约束添加到父视图,然后使用正常边距来实现视图重叠的相同情况,而不是对第一个视图进行约束。现在的代码如下所示:

<?xml version="1.0" encoding="utf-8"?>
<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_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        android:src="@color/black"
        android:layout_marginStart="18dp"
        android:layout_marginTop="18dp"/>

    </androidx.constraintlayout.widget.ConstraintLayout>

我知道这看起来很明显,但是当你开始工作的时候就不一定了。就是这样,快乐的编码!

相关问题