ImageView在模拟器上出现但在测试手机上不出现

3

我有一个简单的应用程序,它显示一个表格,并在下面显示一个图像视图,该图像视图上的图像会根据点击表格中的行而改变。在模拟器上它可以正常工作并显示良好,但是当我将它安装到我的测试手机上时,它无法显示。我的代码如下:

package com.coreservlets.widgets;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TableRow;
import com.welly.keychords.R;

public class keya extends Activity
{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.keya);
    }

    public void rowClick(View view) {
        ImageView imagev = (ImageView) findViewById(R.id.imageView1);
        switch(view.getId()) {
        case R.id.one:
           imagev.setImageResource(R.drawable.achord);
            break;
        case R.id.two:
            imagev.setImageResource(R.drawable.bminor);
             break;
        case R.id.three:
            imagev.setImageResource(R.drawable.csharpdbminor);
             break;
        case R.id.four:
            imagev.setImageResource(R.drawable.dchord);
             break;
        case R.id.five:
            imagev.setImageResource(R.drawable.echord);
             break;
        case R.id.six:
            imagev.setImageResource(R.drawable.fsharpgbminor);
             break;
        case R.id.seven:
            imagev.setImageResource(R.drawable.gsharpdim);
             break;
        }
    }
}

这是我的XML代码:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FF909090"
    android:stretchColumns="1" >

    <TableRow
    android:id="@+id/one"
    android:onClick="rowClick">

        <TextView
            android:layout_margin="2dip"
            android:layout_marginRight="2dip"
            android:background="#0000ff"
            android:padding="3dip"
            android:text="I" />

        <TextView
            android:layout_margin="2dip"
            android:layout_marginLeft="1dip"
            android:background="#0000ff"
            android:gravity="center"
            android:padding="3dip"
            android:text="A"
           />
    </TableRow>

    <TableRow
        android:id="@+id/two"
    android:onClick="rowClick">

        <TextView
            android:layout_column="0"
            android:layout_margin="2dip"
            android:background="#0000ff"
            android:padding="3dip"
            android:text="II" />

        <TextView
            android:layout_margin="2dip"
            android:background="#0000ff"
            android:gravity="center"
            android:padding="3dip"
            android:text="Bm" />
    </TableRow>

    <TableRow
        android:id="@+id/three"
    android:onClick="rowClick">

        <TextView
            android:layout_column="0"
            android:layout_margin="2dip"
            android:background="#0000ff"
            android:padding="3dip"
            android:text="III" />

        <TextView
            android:layout_margin="2dip"
            android:background="#0000ff"
            android:gravity="center"
            android:padding="3dip"
            android:text="C#m" />
    </TableRow>

    <View
        android:layout_height="2dip"
        android:background="#FF909090" />

    <TableRow android:background="#0000ff" >
    </TableRow>

    <TableRow
        android:id="@+id/four"
    android:onClick="rowClick">

        <TextView
            android:layout_margin="2dip"
            android:background="#0000ff"
            android:padding="3dip"
            android:text="IV" />

        <TextView
            android:layout_margin="2dip"
            android:background="#0000ff"
            android:gravity="center"
            android:padding="3dip"
            android:text="D" />
    </TableRow>

    <View
        android:layout_height="2dip"
        android:background="#FF909090" />

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </TableRow>

    <TableRow
        android:id="@+id/five"
    android:onClick="rowClick">

        <TextView
            android:layout_margin="2dip"
            android:layout_marginRight="2dip"
            android:background="#0000ff"
            android:padding="3dip"
            android:text="V" />

        <TextView
            android:layout_margin="2dip"
            android:layout_marginLeft="1dip"
            android:background="#0000ff"
            android:gravity="center"
            android:padding="3dip"
            android:text="E" />
    </TableRow>

    <TableRow
        android:id="@+id/six"
    android:onClick="rowClick">

        <TextView
            android:layout_margin="2dip"
            android:layout_marginRight="2dip"
            android:background="#0000ff"
            android:padding="3dip"
            android:text="VI" />

        <TextView
            android:layout_margin="2dip"
            android:layout_marginLeft="1dip"
            android:background="#0000ff"
            android:gravity="center"
            android:padding="3dip"
            android:text="F#m" />
    </TableRow>

    <TableRow
        android:id="@+id/seven"
    android:onClick="rowClick">

        <TextView
            android:layout_margin="2dip"
            android:layout_marginRight="2dip"
            android:background="#0000ff"
            android:padding="3dip"
            android:text="VII" />

        <TextView
            android:layout_margin="2dip"
            android:layout_marginLeft="1dip"
            android:background="#0000ff"
            android:gravity="center"
            android:padding="3dip"
            android:text="G#dim" />
    </TableRow>





    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="114dp"
        android:background="#000000"
        android:maxLines="10"
        android:text="The relative minor of the Major key of A is F#m. The 12 bar blues progression in A is: \n A | A | A | A | D | D | A | A | E | D | A | E" />





    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="#ffffff" />

</TableLayout>
视图的代码位于XML布局底部。如何调试?

我把 ImageView 的背景改成白色,以尝试查看视图是否出现在手机上,但图片未能加载,仍然没有显示 ImageView 应该存在的白色框。 - user1505181
尝试减小文本视图在图片视图上方的高度。 - maninder singh
@user1505181,你能提供一下你的设备和模拟器的更多设置吗(像是密度、分辨率)?为了测试,请将layout_width设置为某个静态值(例如128dp)。此外,你的drawable文件在/res/drawable中还是有其他限定符(例如drawable-hdpi)?当你将imageview放在单独的布局中时会发生什么(例如作为根线性布局的子元素,tablelayout和一个包含textview和imageview的relativelayout)?点击是否被注册(可能已经注册,但仍然值得检查)? - stealthjong
5个回答

1
这只是一个猜测,因为还可能有其他问题 - 你的资源文件夹中是否有正确的drawable?也许你在drawable-mdpidrawable-ldpi文件夹中放置了与模拟器对应而不是与设备对应的图像,在drawable-hdpi中没有相应的图像。

为了测试,建议创建一个没有任何限定符的drawable文件夹,并将所有drawable文件复制到该文件夹中,然后检查是否能看到ImageView

更新:

使用hierarchyviewer来检查UI元素的属性。


所有文件都在drawable文件夹中。我认为问题不在资源上,因为我已经将ImageView的背景设置为白色,所以即使没有加载图片,它也应该出现在屏幕上。 - user1505181
只有当ImageView具有大小时,背景颜色才会可见。如果没有可绘制的图像,则ImageView的大小为0,因此不会看到任何颜色。 - Rajesh
嗯,好的,谢谢您提供这些信息。图片的尺寸是217 x 217,这可能与此有关吗? - user1505181
请查看使用HierarchyViewer调试UI元素的更新。 - Rajesh

1

我通过将图像更改为PNG格式并将它们缩小50%来解决了这个问题。不确定为什么会起作用,但确实有效!


0

图片视图是否没有显示?是否似乎被截断了?尝试将android:weight="1.0"或任何你想要的数字设置给imageview,或者将整个内容放在scroll view中。如果被截断了,这将解决问题。

还有另一个建议...

尝试将整个表格布局包装在线性布局中,并在最后提取出你的文本视图和图片视图。我不是100%确定,但我认为你只应该在表格布局中使用表格行...然而,由于它在模拟器上工作,所以不太确定。

-编辑-

尝试这样做(将你的文本视图和图片视图放在表格行中)...它可能会起作用。

<TableRow>
 <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="114dp"
        android:background="#000000"
        android:maxLines="10"
        android:text="The relative minor of the Major key of A is F#m. The 12 bar blues progression in A is: \n A | A | A | A | D | D | A | A | E | D | A | E" />
</TableRow>

<TableRow>
    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="#ffffff" />
</TableRow>

这是我设备上的截图:http://i111.photobucket.com/albums/n123/welly_59/Screenshot_2012-11-02-07-34-21.png - user1505181
这是来自模拟器的截图:http://i111.photobucket.com/albums/n123/welly_59/emu.png - user1505181
刚刚编辑了我的答案,不太确定但我认为值得一试。顺便问一下,你的模拟器和设备运行的是哪个版本? - hjm
设备正在运行4.1版本,我的模拟器也是。 - user1505181

0

或许有点老旧,但这个帖子仍然帮助了我。我遇到了同样的问题。在模拟器上,我的图像(JPG)显示得很完美。但是在我的手机上,图像没有显示。

当我在我的ImageView上放置背景颜色时,我确实在我的手机上看到了颜色,但没有图像。

然后我将图像缩小,从大约2000像素宽度缩小到1000像素宽度。然后,哇..图像就出现了。

似乎存在最大图像分辨率。


0

在一个滚动视图中包含XML中的所有视图(除了布局本身)。也许你的手机屏幕高度不太大。


我正在三星Galaxy S2上进行测试,它的屏幕尺寸比我运行的模拟器要大。 - user1505181

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