1. 程式人生 > >android 右上角新增選單

android 右上角新增選單

一般如果不把標題欄隱藏(預設是顯示的), UI的右上角會有一個預設選單settings,並沒起什麼作用。

順便說一下隱藏標題欄的三種做法:

1.在程式碼裡實現

  1. this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉標題欄
記住:這句程式碼要寫在setContentView()前面。

2.在清單檔案(manifest.xml)裡面實現

  1. <application android:icon="@drawable/icon"
  2.         android:label="@string/app_name"
  3.         android:theme="@android:style/Theme.NoTitleBar"
    >  
這樣用可以將整個應用設定成無標題欄,如果只需要在一個Activity設定成一個無標題欄的形式,只要把上面的第三行程式碼寫到某一個Activity裡面就可以了。

3.在style.xml檔案裡定義

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <resources>
  3.     <stylename="notitle">
  4.         <itemname="android:windowNoTitle">true</item>
  5.     </style>
  6. </resources>
然後面manifest.xml中引用就可以了,這種方法稍麻煩了些。
  1. <
    applicationandroid:icon="@drawable/icon"
  2.         android:label="@string/app_name"
  3.         android:theme="@style/notitle">

跑題了,我只是想做個筆記,哈哈。

迴歸正題:

新增選單也有兩種,在xml檔案裡和在程式碼裡新增。

1.xml形式,首先在res/menu目錄下新建一個自定義的選單info.xml,名字隨便:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/quit1"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="Back"/>

</menu>
   
關於自定義選單,這裡只是最簡單的形式,還有subitem, groupitem等。

在MainActivity.java檔案裡:

	@Override  
    public boolean onCreateOptionsMenu(Menu menu) {  

		 getMenuInflater().inflate(R.menu.info, menu); 

      //menu.add(1, Menu.FIRST, 1, "Change Site ID");
		 return true;
	}

	@Override  
    public boolean onOptionsItemSelected(MenuItem item) {  
          
        switch(item.getItemId()){  
        case R.id.quit1:  
        	super.finish();
        	System.exit(0);
        	return true;
        default:  
            return false;  
        }     
    }  
2.在程式碼裡新增選單,一般實現動態新增選單

在MainActivity.java檔案裡:

@Override  
    public boolean onCreateOptionsMenu(Menu menu) {  

		 getMenuInflater().inflate(R.menu.info, menu);  //初始化載入選單項

                  menu.add(1, Menu.FIRST, 1, "Change Site ID");   //四個引數,groupid, itemid, orderid, title
		 return true;
	}

	@Override  
    public boolean onOptionsItemSelected(MenuItem item) {  
          
        switch(item.getItemId()){  
        case 1:            //Menu.FIRST對應itemid為1
        	super.finish();
        	System.exit(0);
        	return true;
        default:  
            return false;  
        }     
    }