Android里面用XML定义菜单资源

Android里面也可用XML定义菜单资源,菜单分两种,一种是OptionMenu(点系统"Menu"键出来),一种是ContextMenu
下面定义两种菜单XML到res\menu文件夹下
my_menu为OptionMenu

 
 
  1. <?xml version="1。0" encoding="utf-8"?> 
  2.   
  3.  
  4.  android:icon="@drawable/font"> 
  5.   
  6.  <!--  定义一组单选菜单项 --> 
  7.   
  8.  <!-- 定义多个菜单项 --> 
  9.  
  10.  android:title="@string/font_10"/> 
  11.  
  12.  android:title="@string/font_12"/> 
  13.  
  14.  android:title="@string/font_14"/> 
  15.  
  16.  android:title="@string/font_16"/> 
  17.  
  18.  android:title="@string/font_18"/> 
  19.   
  20.   
  21.   
  22.   
  23.   
  24.  <!-- 定义一个普通菜单项 --> 
  25.  
  26.  android:title="@string/plain_item"> 
  27.   
  28.  
  29.  android:title="@drawable/color"> 
  30.   
  31.  <!-- 定义一组普通的菜单项 --> 
  32.   
  33.  <!-- 定义3个菜单项 --> 
  34.  
  35.  android:title="@string/red_title"/> 
  36.  
  37.  android:title="@string/green_title"/> 
  38.  
  39.  android:title="@string/blue_title"/> 
  40.   
  41.   
  42.   
  43.   

context.xml为ContextMenu

 
 
  1. <?xml version="1。0" encoding="utf-8"?> 
  2.  
  3. <!-- 定义一组单选菜单项目 --> 
  4.  
  5. <!-- 定义三个菜单项 --> 
  6. android:title="@string/red_title" 
  7. android:alphabeticShortcut="r"> 
  8. android:title="@string/green_title" 
  9. android:alphabeticShortcut="g"> 
  10. android:title="@string/blue_title" 
  11. android:alphabeticShortcut="b"> 
  12.  
  13.  

定义两个res\value下的xml,用来指定颜色,字体

 
 
  1. <?xml version="1。0" encoding="UTF-8"?> 
  2.  
  3. #ff0000 
  4. #00ff00 
  5. #0000ff 
  6.  

strings.xml

 
 
  1.    
  2.    
  3.     Hello World, ContextMenuTest!   
  4.     上下文菜单   
  5.     红色   
  6.     蓝色   
  7.     绿色   
  8.     字体大小   
  9.     字体颜色       
  10.     普通菜单项   
  11.     10号字体      
  12.     12号字体      
  13.     14号字体      
  14.     16号字体      
  15.     18号字体      
  16.    

下面代码将实现两种菜单

 
 
  1. package WangLi.Resource.MenuResTest;   
  2. import android.app.Activity;   
  3. import android.graphics.Color;   
  4. import android.os.Bundle;   
  5. import android.view.ContextMenu;   
  6. import android.view.Menu;   
  7. import android.view.MenuInflater;   
  8. import android.view.MenuItem;   
  9. import android.view.View;   
  10. import android.widget.TextView;   
  11. import android.widget.Toast;   
  12. public class MenuResTest extends Activity {   
  13.     /** Called when the activity is first created. */   
  14.     private TextView txt;   
  15.     @Override   
  16.     public void onCreate(Bundle savedInstanceState) {   
  17.         super.onCreate(savedInstanceState);   
  18.         setContentView(R.layout.main);   
  19.         txt = (TextView)findViewById(R.id.txt);   
  20.         //为文本框注册上下文菜单    
  21.         registerForContextMenu(txt);   
  22.     }   
  23.     public boolean onCreateOptionsMenu(Menu menu)   
  24.     {   
  25.         MenuInflater inflator = new MenuInflater(this);   
  26.         //装填R.menu.my_menu对应的菜单,并添加到menu中    
  27.         inflator.inflate(R.menu.my_menu, menu);   
  28.         return super.onCreateOptionsMenu(menu);   
  29.     }   
  30.     //每次创建上下文菜单时都会触发该方法    
  31.     public void onCreateContextMenu(ContextMenu menu,View source,   
  32.             ContextMenu.ContextMenuInfo menuInfo)   
  33.     {   
  34.         MenuInflater inflator = new MenuInflater(this);   
  35.         //装填R.menu.context对应的菜单,并添加到menu中    
  36.         inflator.inflate(R.menu.context, menu);   
  37.         menu.setHeaderIcon(R.drawable.tools);   
  38.         menu.setHeaderTitle("请选择背景色");   
  39.     }   
  40.     //上下文菜单中菜单项被单击时触发该方法    
  41.     public boolean onContextItemSelected(MenuItem mi)   
  42.     {   
  43.         switch(mi.getItemId())   
  44.         {   
  45.             case R.id.red:   
  46.                 mi.setChecked(true);   
  47.                 txt.setBackgroundColor(Color.RED);   
  48.                 break;   
  49.             case R.id.green:   
  50.                 mi.setChecked(true);   
  51.                 txt.setBackgroundColor(Color.GREEN);   
  52.                 break;   
  53.             case R.id.blue:   
  54.                 mi.setChecked(true);   
  55.                 txt.setBackgroundColor(Color.BLUE);   
  56.                 break;   
  57.         }   
  58.         return true;   
  59.     }   
  60.     //菜单项被单击后的回调方法    
  61.     public boolean onOptionsItemSelected(MenuItem mi)   
  62.     {   
  63.         //判断单击的是哪个菜单项,并针对性地做出响应    
  64.         switch(mi.getItemId())   
  65.         {   
  66.             case R.id.font_10:   
  67.                 txt.setTextSize(10*2);   
  68.                 break;   
  69.             case R.id.font_12:   
  70.                 txt.setTextSize(12*2);   
  71.                 break;   
  72.             case R.id.font_14:   
  73.                 txt.setTextSize(14*2);   
  74.                 break;   
  75.             case R.id.font_16:   
  76.                 txt.setTextSize(16*2);   
  77.                 break;   
  78.             case R.id.font_18:   
  79.                 txt.setTextSize(18*2);   
  80.                 break;   
  81.             case R.id.red_font:   
  82.                 txt.setTextColor(Color.RED);   
  83.                 mi.setChecked(true);   
  84.                 break;   
  85.             case R.id.green_font:   
  86.                 txt.setTextColor(Color.GREEN);   
  87.                 mi.setChecked(true);   
  88.                 break;   
  89.             case R.id.blue_font:   
  90.                 txt.setTextColor(Color.BLUE);   
  91.                 mi.setChecked(true);   
  92.                 break;   
  93.             case R.id.plain_item:   
  94.                 Toast toast = Toast.makeText(MenuResTest.this, "您单击了普通项菜单", Toast.LENGTH_SHORT);   
  95.                 toast.show();   
  96.                 break;   
  97.         }   
  98.         return true;   
  99.     }   
  100. }   

下面是程序运行效果图,刚启动时是一个TextView

点击后,在手机屏幕下方出现OptionMenu

点击字体大小或普通菜单项,出现子菜单

选择就可改变TextView的字体

如下点击"普通菜单项",会出现一个Toast提示,过几秒就会消失

那么怎么弹出ContextMenu呢,就是对着TextView长按就可以了

选择后,背景色就改变了

网页标题:Android里面用XML定义菜单资源
链接地址:http://www.shufengxianlan.com/qtweb/news20/319020.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联