无论我尝试什么,我都无法设置从soap服务传递到我的android模拟器的图像的宽度和高度。我正在使用ImageView,如下所示:
byte[] bloc = Base64.decode(result, Base64.DEFAULT);
Bitmap bmp = BitmapFactory.decodeByteArray(bloc,0,bloc.length);
ImageView image = new ImageView(this);
image.setImageBitmap(bmp);
image.setLayoutParams(
new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
image.getLayoutParams().height = 100;
image.getLayoutParams().width = 100;
setContentView(image);
在上面的代码中,我试图手动设置宽度为259像素,高度为194像素的jpeg图像的宽度和高度。
/res/layout/main.xml看起来像
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="1" android:id="@+id/llid">
</LinearLayout>
在尝试下面的答案中的一些方法之后,我在模拟器上看到以下内容
我甚至不确定我采取的方法是否正确。我在搜索论坛时找到的大多数其他解决方案对我不起作用。任何建议都会很棒。
答案 0 :(得分:10)
试试这样。使用yourBitmap.getWidth()
和.getHeight()
image.setLayoutParams(
new LinearLayout.LayoutParams(
bmp.getWidth(),
bmp.getHeight()));
编辑:
现在你已经为ImgView设置了LP,你要做的第一件事就是将它添加到布局中
LinearLayout ll = (LinearLayout)findViewById(R.layout.llid);
现在,您可以直接添加视图,也可以将参数分开,并将其添加到.addView(view, params)
或.addView(View);
您的电话中。
所以你做了
ll.addView(image);
希望它有效
答案 1 :(得分:3)
如果你改变了这一点会发生什么:
new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
要:
new LinearLayout.LayoutParams(width, height);
..并且是放在LinearLayout中的对象吗?
答案 2 :(得分:1)
我不确定你手动设置图像视图的范围,但是如果它是在为给定的ImageView调用onMeasure之前,那么这就是为什么它尊重XML布局参数。
您可以尝试为ImageView重载onMeasure方法,并调用setMeasuredDimension(100,100)在那里手动设置。
答案 3 :(得分:-1)
试试这个
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(width,height);
imageView.setLayoutParams(params);