个人学习总结

android基础知识和常见问题

GridView边框效果

为GridView添加边框效果


1.自定义GridView的item样式:

grid_item.xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
    <ImageView
        android:id="@+id/item_image"
        android:layout_width="115dp"
        android:layout_height="115dp"
        android:padding="8dp"
        android:background="@drawable/grid_selector" 
       />
</LinearLayout>

2.设置GridView item的背景:

grid_selector.xml文件

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">    
    <item android:state_window_focused="false" 
        android:drawable="@drawable/grid_normal" />	
    <item android:state_selected="true"
        android:drawable="@drawable/grid_pressed" />     
    <item android:state_pressed="true"
        android:drawable="@drawable/grid_pressed" />
</selector>


3.设置GridView的listSelector为透明:

android:listSelector="@android:color/transparent"

4.自定义GridView的adapter:

import java.util.ArrayList;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;

public class GridAdapter extends BaseAdapter {
	private Context mContext = null;
	private LayoutInflater inflater = null;
	private ArrayList<Drawable> drawableList = null;

	public GridAdapter(Context c) {
		this.mContext = c;
		this.inflater = LayoutInflater.from(mContext);
	}
	public void setDataSource(ArrayList<Drawable> list){
		this.drawableList = list;
	}
	public int getCount() {
		if(drawableList != null){
			return drawableList.size();
		}else{
			return 0;
		}
	}

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

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

	public View getView(int position, View convertView, ViewGroup parent) {

		ImageView imageView = new ImageView(mContext);
		if (convertView == null) {
			convertView = inflater.inflate(R.layout.grid_item, null);
			imageView = (ImageView) convertView.findViewById(R.id.item_image);
			imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
			convertView.setTag(imageView);
		} else {
			imageView = (ImageView) convertView.getTag();
		}
		imageView.setImageDrawable(drawableList.get(position));
		return convertView;
	}
}


阅读更多
个人分类: 经验总结
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

GridView边框效果

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭