RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
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定义菜单资源
当前URL:http://jxjierui.cn/article/dhsdjis.html