一、結構
public final class GridView extends AbsListView
java.lang.Object
android.view.View
android.view.ViewGroup
android.widget.AdapterView<T extends android.widget.Adapter>
android.widget.AbsListView
android.widget.GridView
二、類概述
一個在平面上可顯示多個條目的可滾動的視圖組件,該組件中的條目通過一個ListAdapter和該組件進行關聯。比如android手機中顯示的應用:
比如實現九宮格圖,用GridView是首選,也是最簡單的。
三、構造函數
public GridView (Context context)
創建一個默認屬性的GridView實例
public GridView (Context context, AttributeSet attrs)
創建一個帶有attrs屬性的GridView實例
public GridView (Context context, AttributeSet attrs, int defStyle)
創建一個帶有attrs屬性,並且指定其默認樣式的GridView實例
四、XML屬性
五、公共方法
public ListAdapter getAdapter ()
獲得與此組件相關的適配器..
返回值
ListAdapter適配器實例
public int getStretchMode ()
獲得GridView的縮放模式..
public boolean onKeyDown (int keyCode, KeyEvent event)
默認由KeyEvent.Callback.onKeyMultiple()實現,如果視圖是可用的並且是可點擊的,那麼傳入 KEYCODE_DPAD_CENTER或KEYCODE_ENTER值是執行的是按下視圖操作。
參數
keyCode 一個表示按下操作的鍵值.
event 表示按鈕事件的對象.
返回值
如果你認爲已經完成事件處理,不想讓讓下一個處理器來處理此事件,則返回true,否則返回false。
public boolean onKeyMultiple (int keyCode, int repeatCount, KeyEvent event)
默認由KeyEvent.Callback.onKeyMultiple()實現,總是返回false(不處理此事件)。
參數
keyCode 鍵值.
repeatCount 該動作發生的次數.
event 事件對象.
返回值
如果你認爲已經完成事件處理,不想讓讓下一個處理器來處理此事件,則返回true,否則返回false。
public boolean onKeyUp (int keyCode, KeyEvent event)
默認由KeyEvent.Callback.onKeyMultiple()實現,如果視圖是可用的並且是可點擊的,那麼傳入KEYCODE_DPAD_CENTER或KEYCODE_ENTER值是執行的是點擊視圖操作。
參數
keyCode 鍵值.
event 事件對象.
返回值
如果你認爲已經完成事件處理,不想讓讓下一個處理器來處理此事件,則返回true,否則返回false。
public void setAdapter (ListAdapter adapter)
設置GridView的數據。
參數
adapter 爲grid提供數據的適配器
public void setColumnWidth (int columnWidth)
設置GridView的列寬.
參數
columnWidth 列的寬度,以像素爲單位
public void setGravity (int gravity)
設置控件內容的位置,默認值爲:Gravity.LEFT.
參數
gravity 位置值
public void setHorizontalSpacing (int horizontalSpacing)
設置列間距.
參數
horizontalSpacing 列間距值
public void setNumColumns (int numColumns)
設置grid的列數
參數
numColumns 列數值.
public void setSelection (int position)
設置選中的條目.
參數
position . 數據條目在列表中的索引值(從0開始),如果在可觸摸的模式下,在該索引值下的條目將不會被選中,但是該索引值仍然指向該條目。
public void setStretchMode (int stretchMode)
設置grid中的條目以什麼縮放模式去填充空間。.
參數
stretchMode 可選值:NO_STRETCH,STRETCH_SPACING,STRETCH_SPACING_UNIFORM,或STRETCH_COLUMN_WIDTH
public void setVerticalSpacing (int verticalSpacing)
設置行間距.
參數
verticalSpacing 間距值,以像素爲單位
六、代碼示例
下面給出一個小例子,先看效果:
a). GridView01.java
private GridView gridview;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.gridview);
//準備要添加的數據條目
List<Map<String, Object>> items = new ArrayList<Map<String,Object>>();
for (int i = 0; i < 10; i++) {
Map<String, Object> item = new HashMap<String, Object>();
item.put("imageItem", R.drawable.icon);
item.put("textItem", "text" + i);
items.add(item);
}
//實例化一個適配器
SimpleAdapter adapter = new SimpleAdapter(this, items, R.layout.grid_item, new String[]{"imageItem", "textItem"}, new int[]{R.id.image_item, R.id.text_item});
//獲得GridView實例
gridview = (GridView)findViewById(R.id.mygridview);
//gridview.setNumColumns(3);//可以在xml中設置
//gridview.setGravity(Gravity.CENTER);//同上
//將GridView和數據適配器關聯
gridview.setAdapter(adapter);
}
}
b). gridview.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<GridView android:id="@+id/mygridview"
android:numColumns="3"
android:gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</GridView>
</LinearLayout>
c). grid_item.xml
<RelativeLayout android:id="@+id/RelativeLayout01"
android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView android:id="@+id/image_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</ImageView>
<TextView android:id="@+id/text_item"
android:layout_below="@+id/image_item"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
</TextView>
</RelativeLayout>