4

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

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

4

5 回答 5

26

添加android:scaleType="fitStart"到您的ImageView。对我来说没问题。

于 2013-11-18T07:41:06.583 回答
1

您可以使用setLayoutParams,如this answer所示。

编辑

您的问题是您已将视图指定为与其父级一样宽,而加载的位图可能要薄得多。

尝试通过使用此属性来使视图仅根据需要宽:

android:layout_width="wrap_content"
于 2012-04-19T08:03:49.913 回答
1

您可以使用 android:scaleType 更改 ImageView 中的对齐方式。

于 2012-04-19T08:07:29.080 回答
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);

试试这个,如果它工作正常就打我。

于 2012-04-19T09:36:39.420 回答
1

除了上面的答案,您可以使用以下方式以编程方式设置它scaleType

image.scaleType = ImageView.ScaleType.FIT_START
于 2020-09-15T14:52:39.223 回答