`
gryphone
  • 浏览: 433555 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Menu 大变脸

阅读更多

实话说 就个人感觉 Memu 真的很丑 所以今天尝试换掉之

 

 

[原理]

1. 保留Menu按键起作用

2. 用ListView显示所有子菜单

 

 

 

[代码 步骤]

1. 定义 menu.xml 仅含有一个ListView 并得到其View

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<ListView  
	android:id="@+id/mList"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    />
</LinearLayout>

 

mview = this.getLayoutInflater().inflate(R.layout.menu, null);
    	

 

 

2. 使用PopupWindow作为菜单显示容器 并得到其中的ListView 供后续使用

mpop = new PopupWindow(mview,500,200);
    	mpop.setFocusable(true);

    	mlist = (ListView)mview.findViewById(R.id.mList);
    	

 

 

3. 定义List<Map<String,String>> moption 用于存放菜单名字

public void initialMenu(){
    	moption = new ArrayList<Map<String,String>>();
    	
    	Map<String,String> map1 = new HashMap<String,String>();
    	map1.put("Option", "新增");
    	moption.add(map1);
    	
    	Map<String,String> map2 = new HashMap<String,String>();
    	map2.put("Option", "删除");
    	moption.add(map2);
    	
    	Map<String,String> map3 = new HashMap<String,String>();
    	map3.put("Option", "属性");
    	moption.add(map3);
    	
    }

 

4. 在ListView中显示moption

String[] from = {"Option"};
        int[] to = {R.id.text1};
        madapter = new SimpleAdapter(this, moption, R.layout.menulayout, from,to);
        
        mlist.setAdapter(madapter);

 

5. 注册Menu弹起事件

public boolean onCreateOptionsMenu(Menu menu) {
    	mpop.showAtLocation(findViewById(R.id.mainlayout), Gravity.CENTER, 30, 40);
    	
        return false;
    }

 

6. 注册Menu子项单击事件 而后关闭之

mlist.setOnItemClickListener(new OnItemClickListener(){
			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				// TODO Auto-generated method stub
				doMenu(arg2);
				
				mpop.dismiss();
			}
        	
        });


public void doMenu(int i){
    	switch(i){
    	case 0:
    		break;
    	
    	case 1:
    		break;
    			
    	}
    	
    	Toast.makeText(this, "Menu "+i+" is selected!", Toast.LENGTH_LONG).show();
    }

 

 

 7. emulator 运行截图:

 

分享到:
评论
4 楼 gryphone 2010-04-09  
bluewing 写道


不错不错。可在此思路下扩展成带图片的MENU。

good advise~! 不过因为难度不大 所以没有继续下去 况且一直比较矛盾 主要集中在:子菜单 及其布局方式
3 楼 ET焖猪仔 2010-04-09  
看过好受益了
2 楼 bluewing 2010-03-11  


不错不错。可在此思路下扩展成带图片的MENU。
1 楼 sanfeng_chow 2010-03-08  
谢谢楼主,很有启发

相关推荐

    Google.Android.SDK开发范例大全

     3.17 关于(About)程序信息——Menu功能菜单程序设计   3.18 程序加载中,请稍后——ProgressDialog与线程整合应用   3.19 全屏幕以按钮覆盖——动态产生按钮并最大化   3.20 今晚到哪儿打牙祭——具有...

    Google Android SDK开发范例大全 源码

     3.17 关于(About)程序信息——Menu功能菜单程序设计   3.18 程序加载中,请稍后——ProgressDialog与线程整合应用   3.19 全屏幕以按钮覆盖——动态产生按钮并最大化   3.20 今晚到哪儿打牙祭——具有...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    3.21 Android变脸——主题(Theme)实现 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    3.21 Android变脸——主题(Theme)实现 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    3.21 Android变脸——主题(Theme)实现 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast...

    Google Android SDK开发范例大全(完整版)

    3.21 Android变脸——主题(Theme)实现 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast...

    Google Android SDK开发范例大全的目录

    3.21 Android变脸——主题(Theme)实现 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast...

    Google+Android+SDK开发范例大全

    ——具选择功能的对话框 3.21 Android变脸——主题(Theme)实现 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    3.21 Android变脸——主题(Theme)实现 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——...

    Google Android SDK 开发范例大全01

    3.21 Android变脸——主题(Theme)实现 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast...

    Google Android SDK 开发范例大全02

    3.21 Android变脸——主题(Theme)实现 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast...

    Google Android sdk 开发范例大全 部分章节代码

    3.21 Android变脸——主题(Theme)实现 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast...

    Google Android SDK开发范例大全.docx

    - **3.21 Android变脸——主题(Theme)实现** 介绍了如何定义和应用主题(Theme),以实现应用整体视觉风格的一致性。 #### 第4章:史上超豪华的手机控件 - **4.1 EditText与TextView共舞——setOnKeyListener...

Global site tag (gtag.js) - Google Analytics