2016-12-27 59 views
2

我从图库中选择图片如下android:如何以编程方式固定大小的图像视图?

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.profile_image : 
      Intent intent = new Intent(); 
      intent.setType("image/*"); 
      intent.setAction(Intent.ACTION_GET_CONTENT); 
      startActivityForResult(Intent.createChooser(intent, "Select Picture"), GALLERY); 

    } 
    } 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == GALLERY && resultCode != 0) { 
     profileImage.setImageBitmap(null); 
      if (Image != null) 
       Image.recycle(); 
     Uri mImageUri = data.getData(); 
     try { 
      Image = MediaStore.Images.Media.getBitmap(this.getContentResolver(), mImageUri); 
       profileImage.setImageBitmap(Image); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

这个完美的作品,但一个问题是存在的,图像的高度和宽度得到改变为不同的图像设置帐户的个人资料图片。我想要的是将图像大小和宽度固定为150 dp? 下面是我的XML代码

<ImageView 
    android:id="@+id/profile_image" 
    android:layout_width="150dp" 
    android:layout_height="150dp" 
    app:srcCompat="@android:drawable/sym_def_app_icon" 
    android:clickable="true"/> 
+0

请参阅[此](http://stackoverflow.com/a/41038654/5460053)调整图像大小。 –

回答

2

可以使用“centerCrop”scaleType用于此目的。

<ImageView 
    android:id="@+id/profile_image" 
    android:layout_width="150dp" 
    android:layout_height="150dp" 
    android:scaleType="centerCrop"/> 

其他规模类型有:

中心
中心视图中的图像,但执行不结垢。

CENTER_CROP
均匀地缩放图像(保持图像的纵横比),使图像的两个尺寸(宽度和高度)等于或大于视图的相应尺寸(减去填充)。

CENTER_INSIDE
均匀地缩放图像(保持图像的纵横比),使图像的两个尺寸(宽度和高度)等于或小于视图的相应尺寸(减去填充)。

FIT_CENTER
使用CENTER缩放图像。

FIT_END
使用END缩放图像。

FIT_START
使用START缩放图像。

FIT_XY
使用FILL缩放图像。

MATRIX
绘图时使用图像矩阵进行缩放。

0
<ImageView 
    android:id="@+id/profile_image" 
    android:layout_width="150dp" 
    android:layout_height="150dp" 
    app:srcCompat="@android:drawable/sym_def_app_icon" 
    android:layout_centerInParent="true" 
    android:adjustViewBounds="true" 
    android:clickable="true"/> 

请上述两个属性添加到您的ImageView

0

您应该设置LayoutParams来查看要调整大小:

private void resizeImageView(ImageView iv, int w, int h) { 
    //set width and height in pixels 
    iv.setLayoutParams(new ViewGroup.LayoutParams(w, h)); 
    //or if w and h are in dp: 
    //iv.setLayoutParams(new ViewGroup.LayoutParams(dpToPx(this, w), dpToPx(this, h))); 
} 

private int dpToPx(Activity activity, int dp) { 
    DisplayMetrics metrics = new DisplayMetrics(); 
    activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, metrics); 
} 
相关问题