android---(菜单)
来源:互联网 发布:java se6 for mac下载 编辑:程序博客网 时间:2024/05/16 09:13
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)来响应事件
代码的方法添加菜单: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; }}
0 0
- android菜单子菜单
- Android菜单
- android 菜单
- Android菜单
- android 菜单
- Android 菜单
- Android菜单
- Android菜单
- android--菜单
- Android菜单
- Android菜单
- Android菜单
- android 菜单
- android菜单
- android菜单
- android菜单
- android 菜单
- Android菜单
- ios9中出现的问题及解决方案
- iOS开发地图的代码和方法
- 堆排序
- C#学习日记14---引用类型 之 object类
- 验证atexit
- android---(菜单)
- 一个数组中只有0,1,2三个元素,进行排序,要求时间复杂度为O(n)
- Android学习笔记(十一)BroadcastReceiver动态注册、注销示例
- 关于sqlite3 not found
- KL距离的应用一(转)
- mongoDB高级篇①】聚集运算之group,aggregate
- DLX精确覆盖 hdu4069 Squiggly Sudoku
- 读写锁
- stack栈的基本操作