一、結構
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屬性
屬性名稱
描述
android:columnWidth
設定列的寬度。關聯的方法為:setColumnWidth(int)
android:gravity
設定此元件中的内容在元件中的位置。可選的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical 可以多選,用“|”分開。關聯方法:setGravity (int gravity)
android:horizontalSpacing
兩列之間的間距。關聯方法:setHorizontalSpacing(int)
android:numColumns
列數。關聯方法:setNumColumns(int)
android:stretchMode
縮放模式。關聯方法:setStretchMode(int)
android:verticalSpacing
兩行之間的間距。關聯方法:setVerticalSpacing(int)
五、公共方法
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 事件對象.
public boolean onKeyUp (int keyCode, KeyEvent event)
預設由KeyEvent.Callback.onKeyMultiple()實作,如果視圖是可用的并且是可點選的,那麼傳入KEYCODE_DPAD_CENTER或KEYCODE_ENTER值是執行的是點選視圖操作。
參數
keyCode 鍵值.
event 事件對象.
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
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);
//準備要添加的資料條目
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
<?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">
<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"
</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>
七、PDF下載下傳