編輯:關於Android編程
Android中的菜單分為選項菜單(OptionMenu)和上下文菜單(Context Menu)。通常使用菜單資源文件創建菜單。菜單資源文件通常放置在res\menu目錄下,這個目錄默認情況下是不存在的,需要我們自己創建該目錄。菜單資源的根元素通常是<menu></menu>標記,在該標記中可以包含兩種子元素:
1、<item></item>標記,用於定義菜單項。如果某個菜單項中還包括子菜單,可以通過在該菜單項中再包含<menu></menu>標記來實現。
2、<group></group>標記,用於將多個<item></item>標記定義的菜單包裝成一個菜單組。
一、菜單的創建步驟
1、 選項菜單
當用戶單擊菜單按鈕時,彈出的菜單就是選項菜單,創建選項菜單的步驟如下:
(1) 重寫Activity的onCreateOptionsMenu()方法。在該方法中,首先創建一個用於解析菜單資源文件的MenuInflater對象,然後調用該對象的inflate()方法解析一個菜單資源文件,並把解析後的菜單保存在menu中。關鍵代碼如下:
[java]
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater=new MenuInflater(this); //實例化一個MenuInflater對象
inflater.inflate(R.menu.optionmenu, menu); //解析菜單文件
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater=new MenuInflater(this); //實例化一個MenuInflater對象
inflater.inflate(R.menu.optionmenu, menu); //解析菜單文件
return true;
}
(2) 重寫onOptionsItemSelected()方法,用於當菜單被選擇時,做出相應處理。關鍵代碼舉例如下:
[java]
// Called when an options item is clicked
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_setting:
Log.d(TAG, "menu item setting is selected.");
startActivity(new Intent(this, Settings.class));
break;
case R.id.menu_history:
Log.d(TAG, "menu item history is selected.");
startActivity(new Intent(this, History.class));
break;
case R.id.menu_about:
Log.d(TAG, "menu item about is selected.");
break;
}
return true;
}
// Called when an options item is clicked
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_setting:
Log.d(TAG, "menu item setting is selected.");
startActivity(new Intent(this, Settings.class));
break;
case R.id.menu_history:
Log.d(TAG, "menu item history is selected.");
startActivity(new Intent(this, History.class));
break;
case R.id.menu_about:
Log.d(TAG, "menu item about is selected.");
break;
}
return true;
}
2、 上下文菜單
當用戶在某個控件上長時間按住不放,這時彈出的菜單就是上下文菜單。創建上下文菜單的步驟如下:
(1)、在Activity的onCreate()方法中注冊上下文菜單,例如,為文本框組件注冊上下文菜單(也就是說在按住該文本框時,才顯示上下文菜單),可以使用下面的代碼,:
[java]
TextView tv = (TextView)findViewById(R.id.textView);
registerForContextMenu(tv);
TextView tv = (TextView)findViewById(R.id.textView);
registerForContextMenu(tv);
(2)、重寫Activity的onCreateContextMenu()方法,在該方法中,首先創建一個用於解析菜單資源的MenuInflater對象,然後調用該對象的inflate()方法解析菜單資源文件,並把解析後的菜單保存在menu中,最後為菜單頭設置圖標和標題。關鍵代碼如下:
[java]
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
MenuInflater inflator=new MenuInflater(this); //實例化一個MenuInflater對象
inflator.inflate(R.menu.contextmenu, menu); //解析菜單文件
menu.setHeaderIcon(R.drawable.ic_launcher); //為菜單頭設置圖標
menu.setHeaderTitle("選擇顏色:"); //為菜單頭設置標題
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
MenuInflater inflator=new MenuInflater(this); //實例化一個MenuInflater對象
inflator.inflate(R.menu.contextmenu, menu); //解析菜單文件
menu.setHeaderIcon(R.drawable.ic_launcher); //為菜單頭設置圖標
menu.setHeaderTitle("選擇顏色:"); //為菜單頭設置標題
}
(3)、重寫onContextItemSelected()方法,用於當菜單被選擇時,做出相應處理。關鍵代碼如下:
[java]
@Override
public boolean onContextItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.color1: //當選擇紅顏色時
tv.setTextColor(Color.rgb(255, 0, 0));
break;
case R.id.color2: //當選擇綠顏色時
tv.setTextColor(Color.rgb(0, 255, 0));
break;
default:
tv.setTextColor(Color.rgb(255, 255, 255));
}
return true;
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.color1: //當選擇紅顏色時
tv.setTextColor(Color.rgb(255, 0, 0));
break;
case R.id.color2: //當選擇綠顏色時
tv.setTextColor(Color.rgb(0, 255, 0));
break;
default:
tv.setTextColor(Color.rgb(255, 255, 255));
}
return true;
}
紅米Pro今天發布了,紅米Pro有三個版本標准版、高配版和尊享版。紅米Pro三款機型的售價分別是1499元、1699元和1999元,8月6日開放購買。那這三
實現刮刮卡我們可以Get到哪些技能?* 圓形圓角圖片的實現原理* 雙緩沖技術繪圖* Bitmap獲取像素值數據* 獲取繪制文本的長寬* 自定義View的掌握* 獲取屏幕密
Android會為每個apk進程分配一個單獨的空間(比如只能訪問/data/data/自己包名下面的文件),一般情況下apk之間是禁止相互訪問數據的。通過Shared U
在前面兩個章節中我們已經完成了群發助手的讀聯系人,存取數據庫;使用 SimpleCursorAdapter綁定數據庫與ListV