首页 > 解决方案 > Android Grid View:将图像堆叠在另一个之上

问题描述

得到一个网格视图,其中每个网格项目包含 2 个图像和 1 个文本视图。

主图像“subjectIcon”始终显示,在下面的示例中是带有听诊器的红色方块。第二张图片“favouriteStatus”是一个小星星图片,应该显示在右上角。文本位于“subjectIcon”图像下方。

代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
        android:layout_width="120dp"
        android:layout_height="170dp">

    <ImageView
        android:id="@+id/subjectIcon"
        android:layout_width="wrap_content"
        android:layout_height="120dp"
        android:padding="0dp"
        android:scaleType="fitCenter"
        android:visibility="visible"
        app:srcCompat="@drawable/imagescenario" />

    <ImageView
        android:id="@+id/favouriteStatus"
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:layout_marginStart="84dp"
        android:layout_marginTop="0dp"
        android:scaleType="fitCenter"
        android:visibility="visible"
        app:srcCompat="@drawable/star_fill_drop" />

<TextView
        android:layout_width="120dp"
        android:layout_height="50dp"
        android:id="@+id/subjectTitle"
        android:gravity="center"
        android:textColor="#FFFFFF"
        android:layout_marginTop="120dp"
        android:text="Subject Title"/>

设计视图显示了这一点,这就是我想要的:

设计视图

但是,当我运行该应用程序时,从不显示星形图像。有趣的是,如果我将文本放在主图像的顶部,它会位于顶部并显示。

现在我的头撞墙了 3 个小时,我错过了什么?提前致谢

网格视图 xml:

    <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".SubjectListActivity">

<GridView
        android:id="@+id/gv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:columnWidth="120dp"
        android:numColumns="auto_fit"
        android:verticalSpacing="10dp"
        android:horizontalSpacing="5dp"
        android:stretchMode="spacingWidthUniform"

/>


  </androidx.constraintlayout.widget.ConstraintLayout>

标签: androidimagegridview

解决方案


首先,非常感谢 Zain 在上面提供的帮助。知道这不是我的 XML 的问题,这让我查看并更改了我发现问题的另一个区域,尽管我不确定为什么这是一个问题。

在我的代码中,我有一个简单的 IF/ELSE 语句,如果“favStatus”为 1,则显示星形图像,如果为 0,则不显示。

最初我有这个代码:

        if (favStatus.equals("1")) {favIcon.setVisibility(View.VISIBLE);}
        else {favIcon.setVisibility(View.INVISIBLE);}

我发现简单地将其更改为此有效:

        if (favStatus.equals("1")) {favIcon.setImageResource(R.drawable.star_fill_drop);}
        else {favIcon.setVisibility(View.INVISIBLE);}

我不明白为什么 VISIBLE 不起作用,我不得不再次设置图像文件名(已经在 XML 中完成)才能显示。

无论如何,我有一个解决方案。尽管我不确定为什么,但对此的任何启示将不胜感激。


推荐阅读