Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 中級開發 >> 自定義系統菜單的背景

自定義系統菜單的背景

編輯:中級開發

  1. package lab.sodino.menutest;
     
  2. import android.content.Context;
     
  3. import android.app.Activity;
     
  4. import android.os.Bundle;
     
  5. import android.os.Handler;
     
  6. import android.util.AttributeSet;
     
  7. import android.vIEw.InflateException;
     
  8. import android.vIEw.LayoutInflater;
     
  9. import android.vIEw.Menu;
     
  10. import android.vIEw.MenuInflater;
     
  11. import android.vIEw.MenuItem;
     
  12. import android.view.VIEw;
     
  13. import android.widget.Toast;
     
  14. /**
     
  15. * @author Sodino E-mail:[email protected]
     
  16. * @version Time:2011-1-26 下午04:42:04
     
  17. */
     
  18. public class MenuAct extends Activity {
     
  19.         @Override
     
  20.         public void onCreate(Bundle savedInstanceState) {
     
  21.                 super.onCreate(savedInstanceState);
     
  22.                 setContentVIEw(R.layout.main);
     
  23.         }
     
  24.         public boolean onCreateOptionsMenu(Menu menu) {
     
  25.                 super.onCreateOptionsMenu(menu);
     
  26.                 MenuInflater inflater = new MenuInflater(getApplicationContext());
     
  27.                 inflater.inflate(R.menu.menu, menu);
     
  28.                 setMenuBackground();
     
  29.                 return true;
     
  30.         }
     
  31.         public boolean onOptionsItemSelected(MenuItem item) {
     
  32.                 String info = "";
     
  33.                 switch (item.getItemId()) {
     
  34.                 case R.id.menu_add:
     
  35.                         info = "Add";
     
  36.                         break;
     
  37.                 case R.id.menu_delete:
     
  38.                         info = "Delete";
     
  39.                         break;
     
  40.                 case R.id.menu_home:
     
  41.                         info = "Home";
     
  42.                         break;
     
  43.                 case R.id.menu_help:
     
  44.                         info = "Help";
     
  45.                         break;
     
  46.                 default:
     
  47.                         info = "NULL";
     
  48.                         break;
     
  49.                 }
     
  50.                 Toast toast = Toast.makeText(this, info, Toast.LENGTH_SHORT);
     
  51.                 toast.show();
     
  52.                 return super.onOptionsItemSelected(item);
     
  53.         }
     
  54.         // 關鍵代碼為重寫Layout.Factory.onCreateVIEw()方法自定義布局
     
  55.         protected void setMenuBackground() {
     
  56.                 MenuAct.this.getLayoutInflater().setFactory(new android.vIEw.LayoutInflater.Factory() {
     
  57.                         /**
     
  58.                          * name - Tag name to be inflated.<br/>
     
  59.                          * context - The context the vIEw is being created in.<br/>
     
  60.                          * attrs - Inflation attributes as specifIEd in XML file.<br/>
     
  61.                          */
     
  62.                         public View onCreateVIEw(String name, Context context, AttributeSet attrs) {
     
  63.                                 // 指定自定義inflate的對象
     
  64.                                 if (name.equalsIgnoreCase("com.android.internal.view.menu.IconMenuItemVIEw")) {
     
  65.                                         try {
     
  66.                                                 LayoutInflater f = getLayoutInflater();
     
  67.                                                 final View view = f.createVIEw(name, null, attrs);
     
  68.                                                 new Handler().post(new Runnable() {
     
  69.                                                         public void run() {
     
  70.                                                                 // 設置背景圖片
     
  71.                                                                 vIEw.setBackgroundResource(R.drawable.menu_background);
     
  72.                                                         }
     
  73.                                                 });
     
  74.                                                 return vIEw;
     
  75.                                         } catch (InflateException e) {
     
  76.                                                 e.printStackTrace();
     
  77.                                         } catch (ClassNotFoundException e) {
     
  78.                                                 e.printStackTrace();
     
  79.                                         }
     
  80.                                 }
     
  81.                                 return null;
     
  82.                         }
     
  83.                 });
     
  84.         }
     
  85. }
復制代碼

/res/menu/menu.XML

  1. <?XML version="1.0" encoding="utf-8"?>
     
  2. <menu XMLns:android="http://schemas.android.com/apk/res/android">
     
  3.         <item android:id="@+id/menu_add" android:title="Add" android:icon="@drawable/menu_add"></item>
     
  4.         <item android:id="@+id/menu_delete" android:title="Delete" android:icon="@drawable/menu_delete"></item>
     
  5.         <item android:id="@+id/menu_home" android:title="Home" android:icon="@drawable/menu_home"></item>
     
  6.         <item android:id="@+id/menu_help" android:title="Help" android:icon="@drawable/menu_help"></item>
     
  7. </menu>
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved