您的位置:首页 > 移动开发 > Android开发

Android之GridView

2015-06-14 18:39 483 查看
在Android程序设计中GridView跟ListView都是比较常用的多控件布局,前文中的adapter中大量使用了listview,在这里就不在对其进行介绍。GridView先将控件横向显示,然后纵向显示,是实现九宫图的首选!本文介绍的GridView用法跟之前介绍过的ListView极其类似。

GridView常用的XML属性:

android:columnWidth设置列的宽度。
android:gravity设置此组件中的内容在组件中的位置。可选的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical可以多选,用“|”分开。
android:horizontalSpacing两列之间的间距。
android:numColumns设置列数。
android:stretchMode缩放模式。
android:verticalSpacing两行之间的间距。



<GridView
	android:id="@+id/grid"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:columnWidth="70dp"
	android:numColumns="auto_fit" 
	android:verticalSpacing="10dp" 
	android:horizontalSpacing="10dp"
	android:stretchMode="columnWidth"
	android:gravity="center"
	/>


<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_height="wrap_content" 
	android:layout_width="wrap_content"
	android:orientation="vertical"
	android:gravity="center"
	android:layout_gravity="center"
	>
	<LinearLayout 
		android:layout_height="wrap_content" 
		android:layout_width="wrap_content"
		android:orientation="vertical"
		android:gravity="center"
		android:layout_gravity="center">
		<ImageView 
			android:id="@+id/grid_icon"
			android:layout_height="80dip" 
			android:layout_width="80dip"
			android:gravity="center"
			android:layout_gravity="center" 
			>
		</ImageView>
		<TextView 
			android:id="@+id/grid_name"
			android:layout_width="wrap_content"
			android:layout_height="wrap_content"
			android:singleLine="true"
			android:gravity="center"
			android:layout_gravity="center"
			android:textSize="13px"
			android:layout_marginTop="4dip"
			>
		</TextView>
	</LinearLayout> 
</FrameLayout>


GridView grid = (GridView) findViewById(R.id.grid);
grid.setAdapter(new GridAdapter(this, mNameList, mDrawableList));


package com.android.test;
import java.util.ArrayList;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class GridAdapter extends BaseAdapter 
{
	private ArrayList<String> mNameList = new ArrayList<String>();
	private ArrayList<Drawable> mDrawableList = new ArrayList<Drawable>();
	private LayoutInflater mInflater;
	private Context mContext;
	LinearLayout.LayoutParams params;

	public GridAdapter(Context context, ArrayList<String> nameList, ArrayList<Drawable> drawableList) 
	{
		mNameList = nameList;
		mDrawableList = drawableList;
		mContext = context;
		mInflater = LayoutInflater.from(context);
		
		params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
		params.gravity = Gravity.CENTER;
	}

	public int getCount() 
	{
		return mNameList.size();
	}

	public Object getItem(int position) 
	{
		return mNameList.get(position);
	}

	public long getItemId(int position) 
	{
		return position;
	}

	public View getView(int position, View convertView, ViewGroup parent) 
	{
		ItemViewTag viewTag;
		
		if (convertView == null)
		{
			convertView = mInflater.inflate(R.layout.gridview_item, null);			
			// construct an item tag
			viewTag = new ItemViewTag( (ImageView) convertView.findViewById(R.id.grid_icon), 
(TextView) convertView.findViewById(R.id.grid_name));
			convertView.setTag(viewTag);
		} 
		else
		{
			viewTag = (ItemViewTag) convertView.getTag();
		}
		
		// set name
		viewTag.mName.setText(mNameList.get(position));
		
		// set icon
		viewTag.mIcon.setBackgroundDrawable(mDrawableList.get(position));
		viewTag.mIcon.setLayoutParams(params);
		return convertView;
	}
	
	class ItemViewTag
	{
		protected ImageView mIcon;
		protected TextView mName;
		
		public ItemViewTag(ImageView icon, TextView name)
		{
			this.mName = name;
			this.mIcon = icon;
		}
	}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: