Android在imageview中对齐顶部位图

时间:2012-04-19 07:51:34

标签: android android-imageview

无论如何,我可以在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);

任何想法如何做到这一点?

5 个答案:

答案 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