《疯狂安卓讲义》P186 -- 实例:使用XML资源文件定义菜单
2018-03-12 15:51
567 查看
public class MainActivity extends Activity{ private TextView txt; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); txt = (TextView) findViewById(R.id.txt); //为文本框注册上下文菜单 registerForContextMenu(txt); }
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = new MenuInflater(this); //装填R.menu.my_menu对应的菜单,并添加到menu中 inflater.inflate(R.menu.menu_main, menu); return super.onCreateOptionsMenu(menu); } //创建上下文菜单时触发该方法
public void onCreateContextMenu(ContextMenu menu, View source) { MenuInflater inflater = new MenuInflater(this); //装填R.menu.context对应的菜单,并添加到menu中 inflater.inflate(R.menu.context, menu); menu.setHeaderIcon(R.drawable.tools); menu.setHeaderTitle("请选择背景色"); } //上下文菜单中菜单项被单击时触发该方法
@Override public boolean onContextItemSelected(MenuItem mi) { //勾选该菜单项 mi.setChecked(true); switch (mi.getItemId()) { case R.id.red: mi.setChecked(true); txt.setBackgroundColor(Color.RED); break; case R.id.green: mi.setChecked(true); txt.setBackgroundColor(Color.GREEN); break; case R.id.blue: mi.setChecked(true); txt.setBackgroundColor(Color.BLUE); break; } return true; }
@Override //菜单项被单击后的回调方法 public boolean onOptionsItemSelected(MenuItem mi) { if(mi.isCheckable()) { //勾选该菜单项 mi.setChecked(true); } //判断单击的是哪个菜单项,并有针对性地做出响应 switch (mi.getItemId()) { case R.id.font_10: txt.setTextSize(10 * 2); break; case R.id.font_12: txt.setTextSize(12 * 2); break; case R.id.font_14: txt.setTextSize(14 * 2); break; case R.id.font_16: txt.setTextSize(16 * 2); break; case R.id.font_18: txt.setTextSize(18 * 2); break; case R.id.red_font: txt.setTextColor(Color.RED); mi.setChecked(true); break; case R.id.green_font: txt.setTextColor(Color.GREEN); mi.setChecked(true); break; case R.id.blue_font: txt.setTextColor(Color.BLUE); mi.setChecked(true); break; case R.id.plain_item: Toast toast = Toast.makeText(MainActivity.this, "您单击了普通菜单项", Toast.LENGTH_SHORT); toast.show(); break; } return true; }}
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"> <!--定义一组单选菜单项--> <group android:checkableBehavior="single"> <!--定义三个菜单项--> <item android:id="@+id/red" android:title="/red_title" android:alphabeticShortcut="r"/> <item android:id="@+id/green" android:title="/green_title" android:alphabeticShortcut="g"/> <item android:id="@+id/blue" android:title="/blue_title" android:alphabeticShortcut="b"/> </group></menu>
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:title="@string/font_size" android:icon="@drawable/font"> <menu> <!--定义一组单选菜单项--> <group android:checkableBehavior="single"> <!--定义多个菜单项--> <item android:id="@+id/font_10" android:title="@string/font_10"/> <item android:id="@+id/font_12" android:title="@string/font_12"/> <item android:id="@+id/font_14" android:title="@string/font_14"/> <item android:id="@+id/font_16" android:title="@string/font_16"/> <item android:id="@+id/font_18" android:title="@string/font_18"/> </group> </menu> </item> <!--定义一个普通菜单--> <item android:id="@+id/plain_item" android:title="@string/plain_item"> </item> <item android:title="@string/font_color" android:icon="@drawable/color"> <menu> <!--定义一组普通菜单项--> <group> <!--定义三个菜单项--> <item android:id="@+id/red_font" android:title="@string/red_title"/> <item android:id="@+id/green_font" android:title="@string/green_title"/> <item android:id="@+id/blue_font" android:title="@string/blue_title"/> </group> </menu> </item></menu>
<?xml version="1.0" encoding="utf-8"?><!--定义一个线性布局容器--><TextView 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" android:id="@+id/txt" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent">
</TextView>
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = new MenuInflater(this); //装填R.menu.my_menu对应的菜单,并添加到menu中 inflater.inflate(R.menu.menu_main, menu); return super.onCreateOptionsMenu(menu); } //创建上下文菜单时触发该方法
public void onCreateContextMenu(ContextMenu menu, View source) { MenuInflater inflater = new MenuInflater(this); //装填R.menu.context对应的菜单,并添加到menu中 inflater.inflate(R.menu.context, menu); menu.setHeaderIcon(R.drawable.tools); menu.setHeaderTitle("请选择背景色"); } //上下文菜单中菜单项被单击时触发该方法
@Override public boolean onContextItemSelected(MenuItem mi) { //勾选该菜单项 mi.setChecked(true); switch (mi.getItemId()) { case R.id.red: mi.setChecked(true); txt.setBackgroundColor(Color.RED); break; case R.id.green: mi.setChecked(true); txt.setBackgroundColor(Color.GREEN); break; case R.id.blue: mi.setChecked(true); txt.setBackgroundColor(Color.BLUE); break; } return true; }
@Override //菜单项被单击后的回调方法 public boolean onOptionsItemSelected(MenuItem mi) { if(mi.isCheckable()) { //勾选该菜单项 mi.setChecked(true); } //判断单击的是哪个菜单项,并有针对性地做出响应 switch (mi.getItemId()) { case R.id.font_10: txt.setTextSize(10 * 2); break; case R.id.font_12: txt.setTextSize(12 * 2); break; case R.id.font_14: txt.setTextSize(14 * 2); break; case R.id.font_16: txt.setTextSize(16 * 2); break; case R.id.font_18: txt.setTextSize(18 * 2); break; case R.id.red_font: txt.setTextColor(Color.RED); mi.setChecked(true); break; case R.id.green_font: txt.setTextColor(Color.GREEN); mi.setChecked(true); break; case R.id.blue_font: txt.setTextColor(Color.BLUE); mi.setChecked(true); break; case R.id.plain_item: Toast toast = Toast.makeText(MainActivity.this, "您单击了普通菜单项", Toast.LENGTH_SHORT); toast.show(); break; } return true; }}
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"> <!--定义一组单选菜单项--> <group android:checkableBehavior="single"> <!--定义三个菜单项--> <item android:id="@+id/red" android:title="/red_title" android:alphabeticShortcut="r"/> <item android:id="@+id/green" android:title="/green_title" android:alphabeticShortcut="g"/> <item android:id="@+id/blue" android:title="/blue_title" android:alphabeticShortcut="b"/> </group></menu>
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:title="@string/font_size" android:icon="@drawable/font"> <menu> <!--定义一组单选菜单项--> <group android:checkableBehavior="single"> <!--定义多个菜单项--> <item android:id="@+id/font_10" android:title="@string/font_10"/> <item android:id="@+id/font_12" android:title="@string/font_12"/> <item android:id="@+id/font_14" android:title="@string/font_14"/> <item android:id="@+id/font_16" android:title="@string/font_16"/> <item android:id="@+id/font_18" android:title="@string/font_18"/> </group> </menu> </item> <!--定义一个普通菜单--> <item android:id="@+id/plain_item" android:title="@string/plain_item"> </item> <item android:title="@string/font_color" android:icon="@drawable/color"> <menu> <!--定义一组普通菜单项--> <group> <!--定义三个菜单项--> <item android:id="@+id/red_font" android:title="@string/red_title"/> <item android:id="@+id/green_font" android:title="@string/green_title"/> <item android:id="@+id/blue_font" android:title="@string/blue_title"/> </group> </menu> </item></menu>
<?xml version="1.0" encoding="utf-8"?><!--定义一个线性布局容器--><TextView 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" android:id="@+id/txt" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent">
</TextView>
相关文章推荐
- Android自定义控件使用attr.xml文件中的资源时在布局文件中的定义xmlns:app
- 菜单之二:使用xml文件定义菜单
- 使用XML资源文件来定义颜色
- 使用XML资源文件来自定义颜色并使用
- 菜单之二:使用xml文件定义菜单
- 使用XML资源文件来定义颜色
- 菜单之二:使用xml文件定义菜单 分类: H1_ANDROID 2013-11-03 09:39 1038人阅读 评论(0) 收藏
- 菜单之二:使用xml文件定义菜单
- 菜单之二:使用xml文件定义菜单
- 菜单之二:使用xml文件定义菜单
- Eclipse plugins 插件开发学习 - 在 plugin.xml 中使用资源文件 plugin.properties
- AJAX XML 实例 下面的例子将演示网页如何使用 AJAX 来读取来自 XML 文件的信息:
- Android里面用XML定义菜单资源
- 在web.xml定义,在网页中使用变量实例 使用只有创建变量的servlet才可以访问的<init-param>方式 附带登陆和跳转实现
- Android中自定义属性的使用------res/values文件下定义一个attrs.xml
- Android学习笔记(二)——使用任意XML资源文件
- Android中实现双缓冲(画板应用)和XML文件定义菜单
- [原]使用Win API创建顶级菜单(不使用资源文件)
- 使用Win API创建顶级菜单(不使用资源文件)
- [转]在 plugin.xml 中使用资源文件 plugin.properties