97干视频,99国产精品懂色,亚洲精品99久久久久中文字幕,伊人五月丁香综合AⅤ,国产精品成人免费999

  您的位置:華清遠見教育科技集團 >> 新聞動態(tài) >> Android資料 >> Android系統(tǒng)菜單之快捷菜單  
 
Android系統(tǒng)菜單之快捷菜單
分享到:

Android系統(tǒng)快捷菜單(Context Menu)同樣采用了浮動窗體的顯示方式,與子菜單的實現方式相同,但兩種菜單的啟動方式卻截然不同。

·啟動方式:快捷菜單類似于普通桌面程序中的“右鍵菜單”,當用戶點擊界面元素超過2秒后,將啟動注冊到該界面元素的快捷菜單。

·使用方法:與使用選項菜單的方法非常相似,需要重載onCreateContextMenu()方法和onContextItemSelected()方法。

1.onCreateContextMenu()方法

onCreateContextMenu()方法主要用來添加快捷菜單所顯示的標題、圖標和菜單子項等內容,選項菜單中的onCreateOptionsMenu()方法僅在選項菜單第一次啟動時被調用一次,而快捷菜單的onCreateContextMenu()方法每次啟動時都會被調用一次。

代碼清單1 onCreateContextMenu ()

final static int CONTEXT_MENU_1 = Menu.FIRST;
    final static int CONTEXT_MENU_2 = Menu.FIRST+1;
    final static int CONTEXT_MENU_3 = Menu.FIRST+2;
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo){
        menu.setHeaderTitle("快捷菜單標題");
        menu.add(0, CONTEXT_MENU_1, 0,"菜單子項1");
        menu.add(0, CONTEXT_MENU_2, 1,"菜單子項2");
        menu.add(0, CONTEXT_MENU_3, 2,"菜單子項3");
    }

ContextMenu類支持add()方法(代碼第7行)和addSubMenu()方法,可以在快捷菜單中添加菜單子項和子菜單。

第5行代碼的onCreateContextMenu()方法中的參數:第1個參數menu是需要顯示的快捷菜單;第2個參數v是用戶選擇的界面元素;第3個參數menuInfo是所選擇界面元素的額外信息。

2.onContextItemSelected ()方法

菜單選擇事件的處理需要重載onContextItemSelected()方法,該方法在用戶選擇快捷菜單中的菜單子項后被調用,與onOptionsItemSelected ()方法的使用方法基本相同。

代碼清單2 onContextItemSelected()

@Override
    public oolean onContextItemSelected(MenuItem item){
        switch(item.getItemId()){
            case CONTEXT_MENU_1:
                LabelView.setText("菜單子項1");
                return true;
            case CONTEXT_MENU_2:
                LabelView.setText("菜單子項2");
                return true;
            case CONTEXT_MENU_3:
                LabelView.setText("菜單子項3");
                return true;
        }
        return false;
    }

3.registerForContextMenu()方法

使用registerForContextMenu()方法,將快捷菜單注冊到界面控件上(代碼清單3中第7行)。這樣,用戶在長時間點擊該界面控件時,便會啟動快捷菜單。

為了能夠在界面上直接顯示用戶所選擇快捷菜單的菜單子項,在代碼中引用了界面元素TextView(代碼清單3中第6行),通過更改TextView的顯示內容,顯示用戶所選擇的菜單子項。

代碼清單3 registerForContextMenu ()

TextView LabelView = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        LabelView = (TextView)findViewById(R.id.label);
        registerForContextMenu(LabelView);
    }

4.main.xml

代碼清單4 main.xml

<TextView android:id="@+id/label"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="@string/hello"
    />

上述代碼為/src/layout/main.xml文件的部分內容,第1行聲明了TextView的ID為label,在代碼清單3的第6行中,通過R.id.label將ID傳遞給findViewById()方法,這樣用戶便能夠引用該界面元素,并能夠修改該界面元素的顯示內容。

需要注意的一點,代碼清單4的第2行,將android:layout_width設置為match_parent,這樣TextView將填充滿父節(jié)點的所有剩余屏幕空間,用戶點擊屏幕TextView下方任何位置都可以啟動快捷菜單。如果將android:layout_width設置為wrap_content,則用戶必須準確單擊TextView才能啟動快捷菜單。

圖1為快捷菜單的運行效果圖。


圖1 運行效果圖

注:菜單可以像界面布局一樣在XML文件中進行定義。使用XML文件定義界面菜單,將代碼與界面設計分類,有助于簡化代碼的復雜程度,并且更有利于界面的可視化。

下面將快捷菜單的示例程序MyContextMenu改用XML實現,新程序的工程名稱為MyXLMContoxtMenu。

首先需要創(chuàng)建保存菜單內容的XML文件:在/src目錄下建立子目錄menu,并在menu下建立context_menu.xml文件,代碼如代碼清單5所示。

代碼清單5 context_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/contextMenu1"
    android:title="菜單子項1"/>
    <item android:id="@+id/contextMenu2"
        android:title="菜單子項2"/>
    <item android:id="@+id/contextMenu3"
        android:title="菜單子項3"/>
    </menu>

在描述菜單的XML文件中,必須以<menu>標簽(代碼第1行)作為根節(jié)點,<item>標簽(代碼第2行)用來描述菜單中的子項,<item>標簽可以通過嵌套實現子菜單的功能。

XML菜單的顯示結果如圖2所示。


圖2 XML菜單的顯示結果

在XML文件中定義菜單后,在onCreateContextMenu()方法中調用inflater.inflate()方法,將XML資源文件傳遞給菜單對象,代碼如代碼清單6所示。

代碼清單6 onCreateContextMenu()

@Override
    public void onCreateContextMenu(ContextMenu menu,
            View v, ContextMenuInfo menuInfo){
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.context_menu, menu);
    }

第4行代碼中的getMenuInflater()為當前的Activity返回MenuInflater;第5行代碼將XML資源文件R.menu.context_menu,傳遞給menu這個快捷菜單對象。

 更多相關文章

·Android系統(tǒng)菜單之子菜單
·Android系統(tǒng)菜單之選項菜單
·Android系統(tǒng)控件TabHost
·Android系統(tǒng)控件ListView
·Android系統(tǒng)控件Spinner