无论如何,我可以在ImageView
中对齐位图。我的图片视图有问题。我通过Java代码设置它的源代码,在调整位图大小后,它以ImageView
为中心,但我想要的是对齐位图。
声明imageView:
<RelativeLayout
android:id="@+id/collection_background"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/actionbar" >
<ImageView
android:id="@+id/collection_image_background"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:background="#ffffff"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:contentDescription="@string/stampii" />
// countinue ........
以下是我设置位图的方法:
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inTempStorage = new byte[8*1024];
ops = BitmapFactory.decodeStream(cis,null,o2);
ImageView view = (ImageView) findViewById (R.id.collection_image_background);
view.setImageBitmap(ops);
任何想法如何做到这一点?
答案 0 :(得分:20)
将android:scaleType="fitStart"
添加到 ImageView 。对我来说没关系。
答案 1 :(得分:1)
您可以使用setLayoutParams
,如this answer。
修改强>
您的问题是您已将视图指定为与其父视图一样宽,而加载的位图可能相当薄。
尝试仅使用此属性将视图设置为所需的宽度:
android:layout_width="wrap_content"
答案 2 :(得分:1)
您可以使用android:scaleType更改ImageView中的对齐方式。
答案 3 :(得分:1)
实际上,您可以根据屏幕尺寸缩放位图,并将其设置为ImageView
的来源。你可以使用这样的东西:
int screenWidth = getWindow().getWindowManager().getDefaultDisplay().getWidth();
Log.e("","screen width : "+screenWidth);
//int screenHeight = getWindow().getWindowManager().getDefaultDisplay().getHeight();
int width = ops.getWidth();
Log.e("","bitmap width : "+width);
int height = ops.getHeight();
Log.e("","bitmap height : "+height);
float scale = 0;
if(width>height){
scale = (float) width / (float) height;
} else if(height>width){
scale = (float) height / (float) width;
}
Log.e("","scale : "+scale);
float newWidth = (float) screenWidth * scale;
Log.d("","new height : "+newWidth);
Bitmap scaledBitmap = Bitmap.createScaledBitmap(ops, screenWidth, (int) newWidth, true);
Log.e("","new bitmap width : "+scaledBitmap.getWidth());
Log.e("","new bitmap height : "+scaledBitmap.getHeight());
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(screenWidth, (int)newWidth);
params.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
view.setLayoutParams(params);
view.setImageBitmap(scaledBitmap);
试试这个,如果它正常工作,就打我。
答案 4 :(得分:0)
除上述答案外,您还可以使用“ scaleType”以编程方式进行设置:
image.scaleType = ImageView.ScaleType.FIT_START