?
Ce document utilise Manuel du site Web PHP chinois Libérer
GridView
版本:Android 2.2 r1
?
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
?
類概述
一個(gè)在平面上可顯示多個(gè)條目的可滾動(dòng)的視圖組件,該組件中的條目通過一個(gè)ListAdapter和該組件進(jìn)行關(guān)聯(lián)。比如android手機(jī)中顯示的應(yīng)用:
比如實(shí)現(xiàn)九宮格圖,用GridView是首選,也是最簡(jiǎn)單的。
?
構(gòu)造函數(shù)
???????? public GridView (Context context)
???????? 創(chuàng)建一個(gè)默認(rèn)屬性的GridView實(shí)例
public GridView (Context context, AttributeSet attrs)
創(chuàng)建一個(gè)帶有attrs屬性的GridView實(shí)例
public GridView (Context context, AttributeSet attrs, int defStyle)
創(chuàng)建一個(gè)帶有attrs屬性,并且指定其默認(rèn)樣式的GridView實(shí)例
?
XML屬性
屬性名稱 |
描述 |
android:columnWidth |
設(shè)置列的寬度。關(guān)聯(lián)的方法為:setColumnWidth(int) |
android:gravity |
設(shè)置此組件中的內(nèi)容在組件中的位置??蛇x的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical 可以多選,用“|”分開。關(guān)聯(lián)方法:setGravity (int gravity) |
android:horizontalSpacing |
兩列之間的間距。關(guān)聯(lián)方法:setHorizontalSpacing(int) |
android:numColumns |
列數(shù)。關(guān)聯(lián)方法:setNumColumns(int) |
android:stretchMode |
縮放模式。關(guān)聯(lián)方法:setStretchMode(int) |
android:verticalSpacing |
兩行之間的間距。關(guān)聯(lián)方法:setVerticalSpacing(int) |
?
公共方法
???????? public ListAdapter getAdapter ()
獲得與此組件相關(guān)的適配器..
返回值
??? ListAdapter適配器實(shí)例
????????
???????? public int getStretchMode ()
獲得GridView的縮放模式..
?
???????? public boolean onKeyDown (int keyCode, KeyEvent event)
默認(rèn)由KeyEvent.Callback.onKeyMultiple()實(shí)現(xiàn),如果視圖是可用的并且是可點(diǎn)擊的,那么傳入KEYCODE_DPAD_CENTER或KEYCODE_ENTER值是執(zhí)行的是按下視圖操作。
?????? 參數(shù)
????????????? keyCode? 一個(gè)表示按下操作的鍵值.
event? 表示按鈕事件的對(duì)象.?
???????? ???????? 返回值
如果你認(rèn)為已經(jīng)完成事件處理,不想讓讓下一個(gè)處理器來處理此事件,則返回true,否則返回false。
?
???????? public boolean onKeyMultiple (int keyCode, int repeatCount, KeyEvent event)
默認(rèn)由KeyEvent.Callback.onKeyMultiple()實(shí)現(xiàn),總是返回false(不處理此事件)。
???????? 參數(shù)
?????????????????? keyCode? 鍵值.
repeatCount? 該動(dòng)作發(fā)生的次數(shù).
event? 事件對(duì)象.?
???????? ???????? 返回值
如果你認(rèn)為已經(jīng)完成事件處理,不想讓讓下一個(gè)處理器來處理此事件,則返回true,否則返回false。
?
???????? public boolean onKeyUp (int keyCode, KeyEvent event)
默認(rèn)由KeyEvent.Callback.onKeyMultiple()實(shí)現(xiàn),如果視圖是可用的并且是可點(diǎn)擊的,那么傳入KEYCODE_DPAD_CENTER或KEYCODE_ENTER值是執(zhí)行的是點(diǎn)擊視圖操作。
參數(shù)
????????????? keyCode? 鍵值.
event? 事件對(duì)象.
???????? ???????? 返回值
如果你認(rèn)為已經(jīng)完成事件處理,不想讓讓下一個(gè)處理器來處理此事件,則返回true,否則返回false。
?
???????? public void setAdapter (ListAdapter adapter)
設(shè)置GridView的數(shù)據(jù)。
???????? ???????? 參數(shù)
?????????????????? ???????? adapter? 為grid提供數(shù)據(jù)的適配器?
?
???????? public void setColumnWidth (int columnWidth)
設(shè)置GridView的列寬.
???????? ???????? 參數(shù)
??????????????????????????? columnWidth? 列的寬度,以像素為單位
?
???????? public void setGravity (int gravity)
設(shè)置控件內(nèi)容的位置,默認(rèn)值為:Gravity.LEFT.
???????? ???????? 參數(shù)
?????????????????? ???????? gravity? 位置值
?
???????? public void setHorizontalSpacing (int horizontalSpacing)
設(shè)置列間距.
???????? ???????? 參數(shù)
?????????????????? ???????? horizontalSpacing? 列間距值
?
public void setNumColumns (int numColumns)
???????? 設(shè)置grid的列數(shù)
參數(shù)
numColumns? 列數(shù)值.
?
public void setSelection (int position)
???????? 設(shè)置選中的條目.
參數(shù)
position? 數(shù)據(jù)條目在列表中的索引值(從0開始),如果在可觸摸的模式下,在該索引值下的條目將不會(huì)被選中,但是該索引值仍然指向該條目。
?
public void setStretchMode (int stretchMode)
設(shè)置grid中的條目以什么縮放模式去填充空間。.
參數(shù)
stretchMode? 可選值:NO_STRETCH,STRETCH_SPACING,STRETCH_SPACING_UNIFORM,或STRETCH_COLUMN_WIDTH
?
public void setVerticalSpacing (int verticalSpacing)
設(shè)置行間距.
參數(shù)
verticalSpacing? 間距值,以像素為單位..
?
示例:
下面給出一個(gè)小例子,先看效果:
代碼:
1、????? GridView01.java
public class GridView01 extends Activity {
?? private GridView gridview;
?? @Override
?? protected void onCreate(Bundle savedInstanceState) {
????? // TODO Auto-generated method stub
????? super.onCreate(savedInstanceState);
????? setContentView(R.layout.gridview);
//準(zhǔn)備要添加的數(shù)據(jù)條目
????? 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);
????? }
//實(shí)例化一個(gè)適配器
????? 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實(shí)例
????? gridview = (GridView)findViewById(R.id.mygridview);
????? //gridview.setNumColumns(3);//可以在xml中設(shè)置
????? //gridview.setGravity(Gravity.CENTER);//同上
//將GridView和數(shù)據(jù)適配器關(guān)聯(lián)
????? gridview.setAdapter(adapter);
?? }
2、????? gridview.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi"
?? 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>
3、????? grid_item.xml
<?xml version="1.0" encoding="utf-8"?>
<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>