android gridview 加载图片大小,Gridview有两列和自动调整大小的图像

这是一个相对简单的方法。将GridView放入布局,设置拉伸模式以拉伸列宽,将间距设置为0(或任何您想要的),并将列数设置为2:

RES /布局/ main.xml中<?xml  version="1.0" encoding="utf-8"?>

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/gridview"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:verticalSpacing="0dp"

android:horizontalSpacing="0dp"

android:stretchMode="columnWidth"

android:numColumns="2"/>

制作ImageView保持宽高比的自定义:

SRC / COM /示例/ graphicstest / SquareImageView.javapublic class SquareImageView extends ImageView {

public SquareImageView(Context context) {

super(context);

}

public SquareImageView(Context context, AttributeSet attrs) {

super(context, attrs);

}

public SquareImageView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

}

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

super.onMeasure(widthMeasureSpec, heightMeasureSpec);

setMeasuredDimension(getMeasuredWidth(), getMeasuredWidth()); //Snap to width

}}

使用此SquareImageView为网格项创建布局,并将scaleType设置为centerCrop:

RES /布局/ grid_item.xml<?xml  version="1.0" encoding="utf-8"?>

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/picture"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:scaleType="centerCrop"/>

android:id="@+id/text"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:paddingLeft="10dp"

android:paddingRight="10dp"

android:paddingTop="15dp"

android:paddingBottom="15dp"

android:layout_gravity="bottom"

android:textColor="@android:color/white"

android:background="#55000000"/>

现在为您制作一些适配器GridView:

SRC / COM /示例/ graphicstest / MyAdapter.javaprivate final class MyAdapter extends BaseAdapter {

private final List mItems = new ArrayList();

private final LayoutInflater mInflater;

public MyAdapter(Context context) {

mInflater = LayoutInflater.from(context);

mItems.add(new Item("Red",       R.drawable.red));

mItems.add(new Item("Magenta",   R.drawable.magenta));

mItems.add(new Item("Dark Gray", R.drawable.dark_gray));

mItems.add(new Item("Gray",      R.drawable.gray));

mItems.add(new Item("Green",     R.drawable.green));

mItems.add(new Item("Cyan",      R.drawable.cyan));

}

@Override

public int getCount() {

return mItems.size();

}

@Override

public Item getItem(int i) {

return mItems.get(i);

}

@Override

public long getItemId(int i) {

return mItems.get(i).drawableId;

}

@Override

public View getView(int i, View view, ViewGroup viewGroup) {

View v = view;

ImageView picture;

TextView name;

if (v == null) {

v = mInflater.inflate(R.layout.grid_item, viewGroup, false);

v.setTag(R.id.picture, v.findViewById(R.id.picture));

v.setTag(R.id.text, v.findViewById(R.id.text));

}

picture = (ImageView) v.getTag(R.id.picture);

name = (TextView) v.getTag(R.id.text);

Item item = getItem(i);

picture.setImageResource(item.drawableId);

name.setText(item.name);

return v;

}

private static class Item {

public final String name;

public final int drawableId;

Item(String name, int drawableId) {

this.name = name;

this.drawableId = drawableId;

}

}}

将该适配器设置为GridView:@Overridepublic void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

GridView gridView = (GridView)findViewById(R.id.gridview);

gridView.setAdapter(new MyAdapter(this));}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值