GridView创建菜单栏

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     }
原文地址:https://www.cnblogs.com/Jackie-zhang/p/5277445.html