ImageView 在一个 activity 中显示,但在另一个中不显示

ImageView diplaying in one activity but not in aonther

我有一个包含 2 个活动的 android 应用程序:activity_mainactivity_login

在我的活动之上,我有一个徽标。它在 activity_main 中显示正常,但在 activity_login.

中显示不正常

奇怪的是他们都使用相似的布局和相似的代码。

这是我的activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".app.MainActivity"
    android:background="@drawable/background_1">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:srcCompat="@drawable/logo"
        app:layout_constraintLeft_toLeftOf="parent"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginTop="36dp" />

    <Button
        android:id="@+id/button1"
        android:layout_width="195dp"
        android:layout_height="45dp"
        android:text="Sign a File"
        android:layout_marginTop="53dp"
        app:layout_constraintTop_toBottomOf="@+id/imageView"
        android:layout_marginRight="8dp"
        app:layout_constraintRight_toRightOf="parent"
        android:layout_marginLeft="8dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintHorizontal_bias="0.502" />

    <Button
        android:id="@+id/button2"
        android:layout_width="195dp"
        android:layout_height="45dp"
        android:text="Button"
        android:layout_marginLeft="8dp"
        app:layout_constraintLeft_toLeftOf="parent"
        android:layout_marginRight="8dp"
        app:layout_constraintRight_toRightOf="parent"
        android:layout_marginTop="30dp"
        app:layout_constraintTop_toBottomOf="@+id/button4"
        app:layout_constraintHorizontal_bias="0.502" />

    <Button
        android:id="@+id/button3"
        android:layout_width="195dp"
        android:layout_height="45dp"
        android:text="Button"
        android:layout_marginTop="34dp"
        app:layout_constraintTop_toBottomOf="@+id/button1"
        android:layout_marginRight="8dp"
        app:layout_constraintRight_toRightOf="parent"
        android:layout_marginLeft="8dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintHorizontal_bias="0.502" />

    <Button
        android:id="@+id/button4"
        android:layout_width="195dp"
        android:layout_height="45dp"
        android:text="Button"
        android:layout_marginTop="31dp"
        app:layout_constraintTop_toBottomOf="@+id/button3"
        app:layout_constraintBottom_toBottomOf="parent"
        android:layout_marginBottom="8dp"
        app:layout_constraintVertical_bias="0.043"
        android:layout_marginRight="8dp"
        app:layout_constraintRight_toRightOf="parent"
        android:layout_marginLeft="8dp"
        app:layout_constraintLeft_toLeftOf="parent" />







</android.support.constraint.ConstraintLayout>

还有,这是我的 activity_login.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".login.LoginActivity"
    android:background="@drawable/background_1">

     <ImageView
    android:id="@+id/imageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:srcCompat="@drawable/logo"
    app:layout_constraintLeft_toLeftOf="parent"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    android:layout_marginTop="36dp" />

     <EditText
        android:id="@+id/usernameTextField"
        android:layout_width="291dp"
        android:layout_height="63dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginTop="53dp"
        android:background="@color/editTextBackground"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="Username"
        android:textColor="#000000"
        app:layout_constraintHorizontal_bias="0.506"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/imageView" />

    <EditText
        android:id="@+id/passwordTextField"
        android:layout_width="291dp"
        android:layout_height="63dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginTop="0dp"
        android:background="@color/editTextBackground"
        android:ems="10"
        android:inputType="textPassword"
        android:text="Password"
        android:textColor="#000000"
        app:layout_constraintHorizontal_bias="0.506"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/usernameTextField" />

    <Button
        android:id="@+id/button"
        android:onClick="loginButtonClick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginTop="66dp"
        android:background="@color/editTextBackground"
        android:text="Log In"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/passwordTextField"
        app:layout_constraintBottom_toBottomOf="parent"
        android:layout_marginBottom="8dp" />



</android.support.constraint.ConstraintLayout>

activity_login 的设计视图中,它可以很好地显示图像。但是,当我 运行 在 emulator/phone 上进行测试时,它就是不显示。

我尝试从 login_activity 中删除所有其他视图,但仍然遇到同样的问题。我还尝试使用相同的 ConstarintLayout 制作一个新的 activity xml,我只是将徽标添加为 imageView,而当我 运行 应用程序时,徽标未显示。

并且,在 constraintLayout 中使用相同 imageView 的相同徽标在我的 activity_main

中工作正常

更新: 为什么投反对票?

UPDATE2: 根据 rafsanahmad007 的建议,这有效:

instead of:

app:srcCompat="@drawable/logo" use:

android:src="@drawable/logo"

但是,它仍然没有解释为什么它在一个 activity 中使用 app:srcCompat 而在另一个中不工作。

而不是:

app:srcCompat="@drawable/logo"

使用:

android:src="@drawable/logo"

这是一个很好的 来了解其中的区别。

这是一个很常见的错误。但我建议使用 android:src,因为它在所有 appcompat 版本中都更安全。

如果您在应用中使用矢量可绘制对象,那么您可以选择 app:srcCompat。但是你需要检查 gradle.

中的兼容性

尝试使用 android:src="image_location" 而不是 app:srcCompat="image_location"

使用 android:src="@drawable/logo" 代替 app:srcCompat="@drawable/logo"

可能是您在不同的活动中对图像视图 android:id="@+id/imageView" 使用了相同的 ID,因此如果问题再次存在,第一个加载的将出现而第二个不会出现,请使用 android:src="image_location" 而不是使用 app:srcCompat="image_location"

希望对你有用。