ImageView 在一个 activity 中显示,但在另一个中不显示
ImageView diplaying in one activity but not in aonther
我有一个包含 2 个活动的 android 应用程序:activity_main 和 activity_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"
希望对你有用。
我有一个包含 2 个活动的 android 应用程序:activity_main 和 activity_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"
希望对你有用。