Android開發之路六—UI組件

來源:互聯網
上載者:User
Android開發之路六---UI組件


android提供了三種菜單類型,分別為options menu,context menu,sub menu。options menu就是通過按menu鍵來顯示,context menu需要在view上按上2s後顯示。這兩種menu都有可以加入子功能表,子功能表不能種不能嵌套子功能表。

options menu最多隻能在螢幕最下面顯示6個菜單選項,成為icon menu,icon menu不能有checkable選項。多餘6的會以more icon menu來調出,成為expanded menu。options menu通過activity的onCreateOptionsMenu來產生,這個函數只會在menu第一次產生時調用。任何想改變options menu的想法只能在onPrepareOptionsMenu來實現,這個函數會在menu顯示前調用。onOptionsItemSelected 處理選中的功能表項目。

context menu是跟某個具體的view綁定在一起,在activity種用registerForContextMenu來為某個view註冊context menu。context menu在顯示前都會調用onCreateContextMenu來產生menu。onContextItemSelected選中的功能表項目。

android還提供了對功能表項目進行分組的功能,可以把相似功能的功能表項目分成同一個組,這樣就可以通過調用setGroupCheckable,setGroupEnabled,setGroupVisible來設定菜單屬性,而無須單獨設定。

1、利用xml定義選項菜單

a) options menu通過activity的onCreateOptionsMenu來產生

b) 這個函數只會在menu第一次產生時調用。

i. 任何想改變options menu的想法只能在onPrepareOptionsMenu來實現,這個函數會在menu顯示前調用。

c) onOptionsItemSelected 用來處理選中的功能表項目。

1、 響應功能表項目單擊事件

3種方式

onMenuItemSelected(int featureId, MenuItem item) 

public boolean onOptionsItemSelected (MenuItem item) 

onMenuItemClick

2、 動態添加、修改和刪除功能表項目

功能表項目的增刪改查

增:add, addSubMenu

刪:removeItem,removeGroup

改:

l 選項菜單:onPrepareOptionsMenu()——> MenuItem->setXXX()

l 操作功能表:onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {} 方法在每次調用操作功能表時都會被調用一次

boolean cn.class3g.activity.MenuTestActivity.onPrepareOptionsMenu(Menu menu)

public boolean onPrepareOptionsMenu (Menu menu) 

Prepare the Screen's standard options menu to be displayed. This is called right before the menu is shown, every time it is shown. You can use this method to efficiently enable/disable items or otherwise dynamically modify the contents. 

The default implementation updates the system menu items based on the activity's state. Deriving classes should always call through to the base class implementation.

Parameters

menu

The options menu as last shown or first initialized by onCreateOptionsMenu().

Returns

· You must return true for the menu to be displayed; if you return false it will not be shown.

See Also

onCreateOptionsMenu(Menu) 

private int i = 0;

public boolean onPrepareOptionsMenu(Menu menu) {

i++;

MenuItem mi = menu.getItem(0);

mi.setTitle(mi.getTitle() +""+ i);

return super.onPrepareOptionsMenu(menu);

}

3、 子功能表的建立

l Xml建立

l 動態建立

Menu submenu = Menu.addSubMenu(x, x, x, x)

submenu.add()

submenu.add()

main_menu.addSubMenu(x,x,x,x);

或:

getMenuInflater ().inflater(R.menu.submenu, submenu);

4、 帶單選或複選的子功能表

public boolean onCreateOptionsMenu(Menu menu) {

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

SubMenu sb = menu.findItem(R.id.item3).getSubMenu();

sb.setIcon(R.drawable.ic_launcher);

// sb.setGroupCheckable(0, true, true);

sb.getItem(0).setCheckable(true);

sb.getItem(0).setChecked(true);

this.menu = menu;

return super.onCreateOptionsMenu(menu);

}

5、 上下文子功能表

public class ContextMenuActivity extends Activity {

ContextMenu menu = null;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

TextView tv = (TextView) this.findViewById(R.id.textView);

this.registerForContextMenu(tv);

}

public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo){

menu.setHeaderTitle("操作功能表");

menu.setHeaderIcon(R.drawable.ic_launcher);

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

this.menu = menu;

}

public boolean onContextItemSelected(MenuItem item) {

switch (item.getItemId()) {

case R.id.subitem1:

Toast.makeText(this, "subitem1", 

Toast.LENGTH_SHORT).show();

break;

case R.id.subitem2:

Toast.makeText(this, "subitem2", 

Toast.LENGTH_SHORT).show();

break;

case R.id.subitem3:

Toast.makeText(this, "subitem3", 

Toast.LENGTH_SHORT).show();

break;

}

return true;

}

}

6、 示範操作功能表的二級菜單和動態修改

android提供了三種菜單類型,分別為options menu,context menu,sub menu。options menu就是通過按home鍵來顯示,context menu需要在view上按上2s後顯示。這兩種menu都有可以加入子功能表,子功能表不能種不能嵌套子功能表。

options menu最多隻能在螢幕最下面顯示6個菜單選項,成為icon menu,icon menu不能有checkable選項。多餘6的會以more icon menu來調出,成為expanded menu。options menu通過activity的onCreateOptionsMenu來產生,這個函數只會在menu第一次產生時調用。任何想改變options menu的想法只能在onPrepareOptionsMenu來實現,這個函數會在menu顯示前調用。onOptionsItemSelected 處理選中的功能表項目。

context menu是跟某個具體的view綁定在一起,在activity種用registerForContextMenu來為某個view註冊context menu。context menu在顯示前都會調用onCreateContextMenu來產生menu。onContextItemSelected選中的功能表項目。

android還提供了對功能表項目進行分組的功能,可以把相似功能的功能表項目分成同一個組,這樣就可以通過調用setGroupCheckable,setGroupEnabled,setGroupVisible來設定菜單屬性,而無須單獨設定。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.