<GridView android:numColumns="auto_fit" <!--GridView的列数设置为自动--> android:columnWidth="90dp"<!--每列的宽度,即item的宽度--> android:stretchMode="columnWidth"<!--缩放与列宽大小同步--> android:verticalSpacing="10dp"<!--两行之间的边距--> android:horizontalSpacing="10dp"<!--两列之间的边距--> />
1.初始化的时候在代码里面设置setSelector颜色为透明色java
gridView.setSelector(new ColorDrawable(Color.TRANSPARENT));
Gridview 点击某个item 改变item的背景 android
2.在你的adapter里面添加ide
private int clickTemp = -1; // 标识选择的Item public void setSeclection(int position) { clickTemp = position; }
3.而后在getview里面这样布局
@Override public View getView(int position, View convertView, ViewGroup parent) { // 点击改变选中listItem的背景色 if (clickTemp == position) { layout.setBackgroundResource(R.drawable.check_in_gdv_bg_s); } else { layout.setBackgroundColor(Color.TRANSPARENT); } }
4.最后在gridview的单击item事件这样作spa
//GridView监听事件 designOrderGridView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { //arg1是当前item的view,经过它能够得到该项中的各个组件。 //arg2是当前item的ID。这个id根据你在适配器中的写法能够本身定义。 //arg3是当前的item在listView中的相对位置! //设置适配器 mydapter.setSeclection(arg2); mydapter.notifyDataSetChanged(); } });
将Item的个数+1,返回给Adapter的getCount();
code
在Adapter的getView()中,判断position==getCount()-1,就是固定的那个Item.orm
如下两种方式均可以作到:xml
1、在xml布局文件中设置,wrap_content即表示根据gridView的内容自使用宽高,代码以下:事件
android:layout_width="wrap_content" android:layout_height="wrap_content"
2、在代码中动态设置,能够在对gridview赋值以后,计算gridview的宽高,而后进行设置:图片
int height = 20;//此处的高度须要动态计算 int width = 30;//此处的宽度须要动态计算 LinearLayout.LayoutParams linearParams =new LayoutParams(width, height); gridview.setLayoutParams(linearParams); //使设置好的布局参数应用到控件
须要注意的是:若是你的gridview是嵌套在ScrollView中,那么,你须要重写gridview控件,否则gridview只显示一行的问题(即高度不够),具体重写方式,能够参考下面代码:
/** * @author hnbcinfo * 自定义GridView控件,解决在ListView 或ScrollView中使用GridView致使GridView显示不全的问题 * 当前应用:时间轴中,图片显示 */ public class GridViewForScrollView extends GridView { public GridViewForScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public GridViewForScrollView(Context context) { super(context); } public GridViewForScrollView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec( Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } }