第二个imageview没有显示任何内容

时间:2014-04-28 08:44:31

标签: java android imageview

我在同时显示两张图片(软件生成)时遇到问题。

以下是包含imageviews的布局的xml代码段。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#005400"
android:orientation="horizontal">
<RelativeLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="0.5"
    android:background="#ff0000"
    >
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/output_img1" 
        android:contentDescription="First image"/>
</RelativeLayout>
<RelativeLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="0.5"
    android:background="#ffff00"
    >
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/output_img2" 
        android:contentDescription="Second Image"/>
</RelativeLayout>
</LinearLayout>

以下是我创建对象以解决图片视图的片段(在包含图片视图的onCreateView的{​​{1}}中:

Fragment

这是在第一个图像视图中显示图像(缩放)的功能(这是有效的,并且是包含图像视图的outImage1 = (ImageView)view.findViewById(R.id.output_img1); outImage1.setScaleType(ImageView.ScaleType.CENTER_INSIDE); outImage2 = (ImageView)view.findViewById(R.id.output_img2); outImage2.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 代码的一部分):

Fragment

这是在第二个图像视图中显示图像的功能(这似乎什么都不做,也在包含图像视图的public void displayOutImg(Bitmap map){ int bitmapWidth = map.getWidth(); int bitmapHeight = map.getHeight(); int widthParent = outImage1.getWidth(); int heightParent = outImage1.getHeight(); float density = DisplayContext.getResources().getDisplayMetrics().density; float xScale = ((float) widthParent * density) / bitmapWidth; float yScale = ((float) heightParent * density) / bitmapHeight; float minScale = (xScale<yScale)?xScale:yScale; Matrix matrix = new Matrix(); matrix.postScale(minScale, minScale); Bitmap scaled = Bitmap.createBitmap(map, 0, 0, bitmapWidth, bitmapHeight, matrix, true); outImage1.setImageBitmap(scaled); } 的代码中):

Fragment

我试图在同一数据上并排显示由两种不同处理方法产生的图像,但只有第一种显示。我认为这可能是第二种方法的结果有问题,但即使我将第一种方法的结果传递给public void displayOutImg2(Bitmap map){ int bitmapWidth = map.getWidth(); int bitmapHeight = map.getHeight(); int widthParent = outImage2.getWidth(); int heightParent = outImage2.getHeight(); float density = DisplayContext.getResources().getDisplayMetrics().density; float xScale = ((float) widthParent * density) / bitmapWidth; float yScale = ((float) heightParent * density) / bitmapHeight; float minScale = (xScale<yScale)?xScale:yScale; Matrix matrix = new Matrix(); matrix.postScale(minScale, minScale); Bitmap scaled = Bitmap.createBitmap(map, 0, 0, bitmapWidth, bitmapHeight, matrix, true); outImage2.setImageBitmap(scaled); } 第二种图像视图中没有显示。
我还试着看看我是否在代码中的某个地方调用了第二个函数,由于某些原因无法访问GUI。所以我在第一个之后(如下面一行所示)立即调用它,但无济于事。函数从我的主要活动中调用,如此(displayOutImg2()是包含图像视图的片段):

images

到目前为止,我的谷歌搜索失败了,我无法找到这个问题的解决方案,在我看来应该是一个相当基本的东西。我很抱歉,如果这是显而易见的事情,但过去几周我一直在使用java for android进行编程。

感谢。

1 个答案:

答案 0 :(得分:0)

你确定图像实际上不在其他imageview后面吗?要相互显示视图,必须使用FrameLayout。或者只使用带有绘画的画布来彼此绘制两个图像。