Android Studio - 图像在设计视图中显示但在模拟器中未显示

5

我正在学习Android应用开发。在构建一个简单的应用程序来显示两个图像的屏幕时,我使用了ImageView组件。在Android Studio的设计画面中可以看到这些图片,但是当我尝试在Genymotion模拟器上运行应用程序时,屏幕却是空白的,我无法看到这些图片。以下是XML文件内容。

    <?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="showmebioapp.studio.com.showmebio.MainActivity"
    android:background="@android:color/holo_blue_bright">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:srcCompat="@drawable/vegeta"
        android:layout_marginTop="32dp"
        android:id="@+id/imageVegetaId"
        android:layout_alignParentTop="true"
        android:layout_alignRight="@+id/imageGokuId"
        android:layout_alignEnd="@+id/imageGokuId"
        android:layout_marginRight="32dp"
        android:layout_marginEnd="32dp" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:srcCompat="@drawable/goku"
        android:layout_marginBottom="79dp"
        android:id="@+id/imageGokuId"
        android:layout_marginLeft="62dp"
        android:layout_marginStart="62dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
</RelativeLayout>

主要活动.java

public class MainActivity extends Activity implements View.OnClickListener {

private ImageView vegetaImage;
private ImageView gokuImage;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    vegetaImage=(ImageView)findViewById(R.id.imageVegetaId);
    gokuImage=(ImageView)findViewById(R.id.imageGokuId);
    vegetaImage.setOnClickListener(this);
    gokuImage.setOnClickListener(this);
}

@Override
public void onClick(View v) {

    switch(v.getId()){

        case R.id.imageVegetaId:
            Intent vegetaIntent=new Intent(MainActivity.this,DetailsActivity.class);
            vegetaIntent.putExtra("vegetaBio","hello from vegeta");
            startActivity(vegetaIntent);
            break;
        case R.id.imageGokuId:
            Intent gokuIntent=new Intent(MainActivity.this,DetailsActivity.class);
            gokuIntent.putExtra("gokuBio","hello from goku");
            startActivity(gokuIntent);
            break;
    }
}

}

图片描述在此输入 图片描述在此输入

请帮我找到解决方案。


你在实际中使用这个布局吗?展示一下你的Activity的onCreate()方法。 - manabreak
@manabreak 是的,我用过它。 - Sai Sankalp
2
你尝试过使用 android:src 而不是 app:srcCompat 吗? - manabreak
我不太确定,但我认为它可能只适用于矢量可绘制对象 - 你在其他应用程序中使用了这些吗? - manabreak
啊,不太确定是什么导致了这个问题。 - manabreak
显示剩余5条评论
2个回答

14
你正在使用srcCompat而不是像使用背部悟空一样使用src。
  <ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:src="@drawable/vegeta"
    android:layout_marginTop="32dp"
    android:id="@+id/imageVegetaId"
    android:layout_alignParentTop="true"
    android:layout_alignRight="@+id/imageGokuId"
    android:layout_alignEnd="@+id/imageGokuId"
    android:layout_marginRight="32dp"
    android:layout_marginEnd="32dp" />

由于srcCompat属性实际上是在AppCompat库中定义的,因此需要添加适当的命名空间。重要的是,请确保在使用此属性时添加正确的命名空间。

xmlns:app="http://schemas.android.com/apk/res-auto"

重要提示:您可能会遇到一个只是可以忽略的Lint错误。我已经尝试并且也有同样的错误,但它是正常工作的。更多信息请参考

祝编码愉快 :)


我使用了 @manabreak 建议的 android:src。它起作用了。你能告诉我为什么吗?因为 app:srcCompat 对我的另一个应用程序有效。提前致谢。 - Sai Sankalp

2

我刚刚花了不到1个小时解决了这个问题 - 下载并尝试使用另一个模拟器来检查。在尝试上述提示后,这是我的解决方法!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接