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