GridView(网格视图)可以用来做九宫图、表格(行列)的视图,因其是网格状的,不用去调整权重,而且单个item可以自定义,因此也可以用来创建菜单栏(图标加文字形式),布局就一个GridView。
1
然后设置列数,背景图片等属性。跟着设置设配器。
1 /**为GridView配饰菜单资源*/ 2 private void initGridViewMenu(){ 3 mGridViewToolbar = (GridView)findViewById(R.id.file_gridview_toolbar); 4 //设置选中时候的背景图片 5 mGridViewToolbar.setSelector(R.drawable.menu_item_selected); 6 //设置背景图片 7 mGridViewToolbar.setBackgroundResource(R.drawable.menu_background); 8 //设置列数 9 mGridViewToolbar.setNumColumns(6);10 //设置居中对齐11 mGridViewToolbar.setGravity(Gravity.CENTER);12 //设置水平,垂直间距为1013 mGridViewToolbar.setVerticalSpacing(10);14 mGridViewToolbar.setHorizontalSpacing(10);15 //设置适配器16 mGridViewToolbar.setAdapter(getMenuAdapter(gridview_menu_title,girdview_menu_image));17 }
接着是适配器的定义(用SimpleAdapter):
1 /**菜单适配器*/ 2 private SimpleAdapter getMenuAdapter(String[] menuNameArray, 3 int[] imageResourceArray) { 4 //数组列表用于存放映射表 5 ArrayList> mData = new ArrayList >(); 6 for (int i = 0; i < menuNameArray.length; i++) { 7 HashMap mMap = new HashMap (); 8 //将“image”映射成图片资源 9 mMap.put("image", imageResourceArray[i]);10 //将“title”映射成标题11 mMap.put("title", menuNameArray[i]); 12 mData.add(mMap);13 }14 //新建简单适配器,设置适配器的布局文件,映射关系15 SimpleAdapter mAdapter = new SimpleAdapter(this, mData,R.layout.item_menu, new String[] { "image", "title" },new int[] { R.id.item_image, R.id.item_text });16 return mAdapter;17 }
最后是设置GridView每一个item的监听器。
1 /**菜单项的监听*/ 2 protected void initMenuListener(){ 3 mGridViewToolbar.setOnItemClickListener(new OnItemClickListener(){ 4 5 public void onItemClick(AdapterView arg0, View arg1, int arg2, 6 long arg3) { 7 switch(arg2){ // 以下为实例代码 8 //回到根目录 9 case 0:10 menuPosition = 1;11 initFileListInfo(mRootPath);12 break;13 //回到SD卡根目录14 case 1:15 menuPosition = 2;16 initFileListInfo(mSDCard);17 break;18 //显示搜索对话框19 case 2:20 searchDilalog();21 break;22 //创建文件夹23 case 3:24 createFolder();25 break;26 //粘贴文件27 case 4:28 palseFile();29 break;30 //退出31 case 5:32 MainActivity.this.finish();33 break;34 }35 } 36 });37 }