图像裁剪以适合 GridView
Posted
技术标签:
【中文标题】图像裁剪以适合 GridView【英文标题】:Image cropping to fit in a GridView 【发布时间】:2013-04-30 18:12:50 【问题描述】:我需要在 GridView 中显示三列 ImageView 并且我想将图像平方以避免这种效果https://www.dropbox.com/s/hjc55ijbf8cdkao/SC20130430-194230.png 这是我的 xml 代码:
<?xml version="1.0" encoding="utf-8"?>
<GridView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/grid_view"
android:layout_
android:layout_
android:numColumns="3"
android:columnWidth="90dp"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
android:gravity="center"
android:stretchMode="columnWidth" >
</GridView>
和适配器:
public class PhotoListAdapter extends ArrayAdapter<Photo>
Context context;
// Constructor
public PhotoListAdapter(Context context, ArrayList<Photo> mPhotoList)
super(context, R.layout.item_album_detail, mPhotoList);
this.context = context;
@Override
public View getView(int position, View convertView, ViewGroup parent)
// Inflating
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.item_album_detail, parent, false);
// Linking view by id
ImageView pic = (ImageView) convertView.findViewById(R.id.current_img);
// Get current item
Photo item = getItem(position);
// Set widget
pic.setScaleType(ImageView.ScaleType.CENTER_CROP);
ImageDownloader imgd = new ImageDownloader(pic);
imgd.execute(item.getPhoto_m());
return convertView;
在 item_album_detail.xml 中只有一个 ImageView
<ImageView
xmlns:android="http://schemas.android.com/apk/res/android"
android:contentDescription="@string/desc"
android:id="@+id/current_img"
android:layout_
android:layout_
android:adjustViewBounds="true" />
希望能得到这个https://www.dropbox.com/s/i5gimy1lcwyavui/SC20130430-195710.png
【问题讨论】:
【参考方案1】:更改秤类型将解决您的问题。但图像可能看起来很拉伸。
pic.setScaleType(ImageView.ScaleType.FIT_XY);
【讨论】:
或者他可以使用类似的 ImageView.ScaleType.CENTER_CROP 形式,如果他希望将大部分图像放入其中,但截断不适合的其余部分空间。 对。乍一看,他似乎使用了正确的比例类型来链接他想要的内容。我会重新阅读这篇文章。 我认为某些图像的大小小于图像视图的大小。这就是为什么它看起来更小。否则 CENTER_CROP 应该达到他的目的。【参考方案2】:您可以尝试以编程方式更改相对布局中图像视图的大小。我必须这样做才能获得瓷砖(相同尺寸)
DisplayMetrics displaymetrics = new DisplayMetrics();
mActivity.getWindowManager().getDefaultDisplay()
.getMetrics(displaymetrics);
int height = displaymetrics.heightPixels / 2
- (int) convertDpToPixel(1);
int width = displaymetrics.widthPixels / 2 - (int) convertDpToPixel(1);
iv1.setLayoutParams(new RelativeLayout.LayoutParams(width,
height));
iv2.setLayoutParams(new RelativeLayout.LayoutParams(width,
height));
iv3.setLayoutParams(new RelativeLayout.LayoutParams(width,
height));
iv4.setLayoutParams(new RelativeLayout.LayoutParams(width,
height));
【讨论】:
以上是关于图像裁剪以适合 GridView的主要内容,如果未能解决你的问题,请参考以下文章