我在同时显示两张图片(软件生成)时遇到问题。
以下是包含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进行编程。
感谢。
答案 0 :(得分:0)
你确定图像实际上不在其他imageview后面吗?要相互显示视图,必须使用FrameLayout。或者只使用带有绘画的画布来彼此绘制两个图像。