当前位置: 首页 > news >正文

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

相关文章:

  • 问题-某个程序改了ICO图标后编译后还是显示老图标?
  • 自动生成小学四则运算题目的程序
  • Android视频直播解决方案(rstp、udp)
  • js实现touch移动触屏滑动事件
  • 7、JavaScript 知识总结
  • 正则学习笔记
  • 注解
  • 堆和栈的区别(转过无数次的文章)
  • 我的Python成长之路---第七天---Python基础(21)---2016年2月27日(晴)
  • 进度条2
  • [Unity] Unity3D研究院编辑器之独立Inspector属性
  • 递归案例:汉诺塔问题
  • 三大家族轻松管理CentOS 7网络属性配置
  • 顺序表
  • PSD解析工具实现(二)
  • 【前端学习】-粗谈选择器
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Javascript弹出层-初探
  • JavaScript新鲜事·第5期
  • js作用域和this的理解
  • MySQL数据库运维之数据恢复
  • MySQL主从复制读写分离及奇怪的问题
  • Redis在Web项目中的应用与实践
  • uva 10370 Above Average
  • webpack+react项目初体验——记录我的webpack环境配置
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 从0实现一个tiny react(三)生命周期
  • 关于Flux,Vuex,Redux的思考
  • 力扣(LeetCode)56
  • 在weex里面使用chart图表
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • ###项目技术发展史
  • #pragma pack(1)
  • (52)只出现一次的数字III
  • (a /b)*c的值
  • (day 12)JavaScript学习笔记(数组3)
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (原創) 物件導向與老子思想 (OO)
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)Linq学习笔记
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET Core 项目指定SDK版本
  • .NET Core中Emit的使用
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • [ Linux ] git工具的基本使用(仓库的构建,提交)
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • [AutoSar]BSW_OS 01 priority ceiling protocol(PCP)
  • [C#] 如何调用Python脚本程序
  • [C#]C#学习笔记-CIL和动态程序集
  • [C]整形提升(转载)