GridView(网格视图)可以用来做九宫图、表格(行列)的视图,因其是网格状的,不用去调整权重,而且单个item可以自定义,因此也可以用来创建菜单栏(图标加文字形式),布局就一个GridView。
1 <GridView 2 android:id="@+id/file_gridview_toolbar" 3 android:layout_height="wrap_content" 4 android:layout_width="fill_parent" 5 android:layout_alignParentBottom="true"></GridView>
然后设置列数,背景图片等属性。跟着设置设配器。
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 //设置水平,垂直间距为10 13 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<HashMap<String, Object>> mData = new ArrayList<HashMap<String, Object>>(); 6 for (int i = 0; i < menuNameArray.length; i++) { 7 HashMap<String, Object> mMap = new HashMap<String, Object>(); 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 }