Android里面也可用XML定义菜单资源,菜单分两种,一种是OptionMenu(点系统"Menu"键出来),一种是ContextMenu
下面定义两种菜单XML到res\menu文件夹下
my_menu为OptionMenu
- <?xml version="1。0" encoding="utf-8"?>
- android:icon="@drawable/font">
- <!-- 定义一组单选菜单项 -->
- <!-- 定义多个菜单项 -->
- android:title="@string/font_10"/>
- android:title="@string/font_12"/>
- android:title="@string/font_14"/>
- android:title="@string/font_16"/>
- android:title="@string/font_18"/>
- <!-- 定义一个普通菜单项 -->
- android:title="@string/plain_item">
- android:title="@drawable/color">
- <!-- 定义一组普通的菜单项 -->
- <!-- 定义3个菜单项 -->
- android:title="@string/red_title"/>
- android:title="@string/green_title"/>
- android:title="@string/blue_title"/>
context.xml为ContextMenu
- <?xml version="1。0" encoding="utf-8"?>
- <!-- 定义一组单选菜单项目 -->
- <!-- 定义三个菜单项 -->
- android:title="@string/red_title"
- android:alphabeticShortcut="r">
- android:title="@string/green_title"
- android:alphabeticShortcut="g">
- android:title="@string/blue_title"
- android:alphabeticShortcut="b">
定义两个res\value下的xml,用来指定颜色,字体
- <?xml version="1。0" encoding="UTF-8"?>
#ff0000 #00ff00 #0000ff
strings.xml
Hello World, ContextMenuTest! 上下文菜单 红色 蓝色 绿色 字体大小 字体颜色 普通菜单项 10号字体 12号字体 14号字体 16号字体 18号字体
下面代码将实现两种菜单
- package WangLi.Resource.MenuResTest;
- import android.app.Activity;
- import android.graphics.Color;
- import android.os.Bundle;
- import android.view.ContextMenu;
- import android.view.Menu;
- import android.view.MenuInflater;
- import android.view.MenuItem;
- import android.view.View;
- import android.widget.TextView;
- import android.widget.Toast;
- public class MenuResTest extends Activity {
- /** Called when the activity is first created. */
- private TextView txt;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- txt = (TextView)findViewById(R.id.txt);
- //为文本框注册上下文菜单
- registerForContextMenu(txt);
- }
- public boolean onCreateOptionsMenu(Menu menu)
- {
- MenuInflater inflator = new MenuInflater(this);
- //装填R.menu.my_menu对应的菜单,并添加到menu中
- inflator.inflate(R.menu.my_menu, menu);
- return super.onCreateOptionsMenu(menu);
- }
- //每次创建上下文菜单时都会触发该方法
- public void onCreateContextMenu(ContextMenu menu,View source,
- ContextMenu.ContextMenuInfo menuInfo)
- {
- MenuInflater inflator = new MenuInflater(this);
- //装填R.menu.context对应的菜单,并添加到menu中
- inflator.inflate(R.menu.context, menu);
- menu.setHeaderIcon(R.drawable.tools);
- menu.setHeaderTitle("请选择背景色");
- }
- //上下文菜单中菜单项被单击时触发该方法
- public boolean onContextItemSelected(MenuItem mi)
- {
- 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;
- }
- //菜单项被单击后的回调方法
- public boolean onOptionsItemSelected(MenuItem mi)
- {
- //判断单击的是哪个菜单项,并针对性地做出响应
- 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(MenuResTest.this, "您单击了普通项菜单", Toast.LENGTH_SHORT);
- toast.show();
- break;
- }
- return true;
- }
- }
下面是程序运行效果图,刚启动时是一个TextView
点击后,在手机屏幕下方出现OptionMenu
点击字体大小或普通菜单项,出现子菜单
选择就可改变TextView的字体
如下点击"普通菜单项",会出现一个Toast提示,过几秒就会消失
那么怎么弹出ContextMenu呢,就是对着TextView长按就可以了
选择后,背景色就改变了
网页标题:Android里面用XML定义菜单资源
链接地址:http://www.shufengxianlan.com/qtweb/news20/319020.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联