android---(菜单)
2015-10-06 10:02
519 查看
1.Options menu(老式的) and action bar(新版的,在标题栏显示)
2.Context menu()
3.Popup menu(弹出菜单)
Options menu and action bar:
选项菜单的步骤
1.覆盖Activity的onCreateOptionMenu(Menu menu)方法,当菜单第一次被打开时调用
2.调用Menu的add()方法添加菜单项(Menultem),同时可以调用Menultem的seticon()方法来为菜单设置图标,
3.当菜单项(Menultem)被选择时,覆盖Activity的onOptionsltemSelected(Menultem item)来响应事件
Context Menu(上下文菜单):
与上下文环境有关,思想类似windows中的右键单击的快捷菜单,操作时需要长时间按住某个东东不放。
步骤:
1.覆盖Activity的onCreateContextMenu(Menu menu)方法,调用Menu的add()方法添加菜单项(Menultem)
2.覆盖Activity的onContextltemSelected(Menultem item)来响应事件
3.调用register的ForContextMenu()方法来为视图注册上下文菜单
Popup Menu:
弹出式菜单是停靠在一个View 上的一个模式菜单。如果View对象下方有空间,那么弹出菜单将显示在停靠对象的下方,否则会显示在上方。版本11以上。
2.Context menu()
3.Popup menu(弹出菜单)
Options menu and action bar:
选项菜单的步骤
1.覆盖Activity的onCreateOptionMenu(Menu menu)方法,当菜单第一次被打开时调用
2.调用Menu的add()方法添加菜单项(Menultem),同时可以调用Menultem的seticon()方法来为菜单设置图标,
3.当菜单项(Menultem)被选择时,覆盖Activity的onOptionsltemSelected(Menultem item)来响应事件
代码的方法添加菜单: public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //用于创建选项菜单事件的方法,在打开界面时会被自动调用 @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. //getMenuInflater :获取一个菜单填充器 //getMenuInflater().inflate(R.menu.menu_main, menu); //添加菜单项(组id,当前选项id,排序,menu标题) menu.add(0,100,1,"设置游戏"); //返回的是MenuItem对象 menu.add(0,200,2,"开始游戏"); menu.add(0,300,3,"退出游戏"); return true; } //菜单选项的单击处理事件方法 @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); switch (id){ case 100: Toast.makeText(this,"正在打开设置游戏界面",Toast.LENGTH_SHORT).show(); break; case 200: Toast.makeText(this,"正在打开开始游戏界面",Toast.LENGTH_SHORT).show(); break; case 300: Toast.makeText(this,"退出游戏",Toast.LENGTH_SHORT).show(); break; } return super.onOptionsItemSelected(item); } }
men.xml: 配置的方法添加菜单 <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> // app:showAsAction: //never:当有图片时,只显示文字 //ifRoom:显示图片,而不显法文字 //always:在标题栏中显示 <item android:id="@+id/game_set" android:title="游戏设置" android:orderInCategory="100" app:showAsAction="ifRoom" android:icon="@android:drawable/ic_menu_set_as" /> <item android:id="@+id/game_start" android:title="开始游戏" android:orderInCategory="200" app:showAsAction="ifRoom" android:icon="@android:drawable/ic_media_play" /> <item android:id="@+id/game_exit" android:title="退出游戏" android:orderInCategory="300" app:showAsAction="never" android:icon="@android:drawable/ic_menu_edit" /> </menu> 2.核心代码: public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //用于创建选项菜单事件的方法,在打开界面时会被自动调用 @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. //getMenuInflater :获取一个菜单填充器 getMenuInflater().inflate(R.menu.menu_main, menu); return true; } //菜单选项的单击处理事件方法 @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); switch (id){ case R.id.game_set: Toast.makeText(this,"正在打开设置游戏界面",Toast.LENGTH_SHORT).show(); break; case R.id.game_start: Toast.makeText(this,"正在打开开始游戏界面",Toast.LENGTH_SHORT).show(); break; case R.id.game_exit: Toast.makeText(this,"退出游戏",Toast.LENGTH_SHORT).show(); break; } return super.onOptionsItemSelected(item); } }
Context Menu(上下文菜单):
与上下文环境有关,思想类似windows中的右键单击的快捷菜单,操作时需要长时间按住某个东东不放。
步骤:
1.覆盖Activity的onCreateContextMenu(Menu menu)方法,调用Menu的add()方法添加菜单项(Menultem)
2.覆盖Activity的onContextltemSelected(Menultem item)来响应事件
3.调用register的ForContextMenu()方法来为视图注册上下文菜单
menu.xml: <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity" > <item android:id="@+id/red" android:title="红色" android:orderInCategory="100" /> <item android:id="@+id/blue" android:title="蓝色" android:orderInCategory="200" /> <item android:id="@+id/green" android:title="绿色" android:orderInCategory="300" /> </menu> activity.xml <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="长按我设置背影颜色" android:id="@+id/textView" android:gravity="center" /> 核心代码: public class MainActivity extends AppCompatActivity { private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView)findViewById(R.id.textView); //注册上下文菜单到 textView组件上 registerForContextMenu(textView); } //创建上下文菜单的事件方法 @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); //将这个菜单配置文件添加到菜单项中 getMenuInflater().inflate(R.menu.menu_main,menu); } //上下文 菜单的单击事件 @Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()){ case R.id.red: textView.setBackgroundColor(Color.RED); break; case R.id.green: textView.setBackgroundColor(Color.GREEN); break; case R.id.blue: textView.setBackgroundColor(Color.BLUE); break; } return super.onContextItemSelected(item); } }
Popup Menu:
弹出式菜单是停靠在一个View 上的一个模式菜单。如果View对象下方有空间,那么弹出菜单将显示在停靠对象的下方,否则会显示在上方。版本11以上。
menu.xml: <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> <item android:id="@+id/S" android:title="S" android:orderInCategory="100" /> <item android:id="@+id/M" android:title="M" android:orderInCategory="200" /> <item android:id="@+id/L" android:title="L" android:orderInCategory="300" /> <!-- <group></group>:可以将菜单放在一组中 可以写多级子菜单 <item> <menu> <item> </item> </menu> </item> --> </menu> activity.xml: <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/button_select" android:text="请选择型号" android:onClick="typeSize" /> public class MainActivity extends AppCompatActivity implements PopupMenu.OnMenuItemClickListener { private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button_select); } //d按扭单击事件 public void typeSize(View v){ //创建组件 PopupMenu popupMenu = new PopupMenu(this,v); //创建菜单填充容器 MenuInflater inflater = popupMenu.getMenuInflater(); //填充 inflater.inflate(R.menu.menu_main,popupMenu.getMenu()); //监听菜单单击事件 popupMenu.setOnMenuItemClickListener(this); //显示 popupMenu.show(); } @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()){ case R.id.L: Toast.makeText(this,"你选择了L号",Toast.LENGTH_SHORT).show(); break; case R.id.M: Toast.makeText(this,"你选择了M号",Toast.LENGTH_SHORT).show(); break; case R.id.S: Toast.makeText(this,"你选择了S号",Toast.LENGTH_SHORT).show(); break; } return true; } }
相关文章推荐
- Android学习笔记(十一)BroadcastReceiver动态注册、注销示例
- Android Listview with different layout for each row
- LocationManager定位
- android activity回传值 activityForResult startActivityForResult
- Android数据存储——SQLite数据库(模板)
- AutoCompleteTextView
- 为啥Android手机总会越用越慢?
- android 界面控件被输入法顶起来解决
- 10.5 计时器,一些心得
- Android studio 配置SVN 报错问题解决
- Android数据存储之SQLite 数据库学习
- Android:AysncTask异步加载
- Android IOS WebRTC 音视频开发总结(四四)-- webrtc图书
- Android中的inflate()原理解析
- Android学习记录:SQLite数据库、res中raw的文件调用
- Android ListView使用BaseAdapter与ListView的优化
- android wear开发之:增加可穿戴设备功能到通知中 - Adding Wearable Features to Notifications
- android wear开发:为可穿戴设备创建一个通知 - Creating a Notification for Wearables
- android从应用到驱动之—camera(2)---cameraHAL的实现
- Android: 在onCreate()中获得对象尺寸