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;
	}
}


發佈了43 篇原創文章 · 獲贊 0 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章