4.4.6 Context菜单

Android的Context Menu基本上与Windows系统的右键菜单等同。如果Context Menu已经注册到视图(View)上了,那么在屏幕长按(大约2秒钟)就会弹出Context菜单。

修改activity_main.xml文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" ><ListView    android:id="@+id/list01"     android:layout_width="fill_parent"    android:layout_height="0px"     android:layout_weight="1"/>            <TextView        android:id="@+id/footer"        android:layout_width="fill_parent"        android:layout_height="60dp"        android:padding="4dp"        android:background="#FF666666"        android:text="@string/footer" /></LinearLayout>

新建ListView的单项Layout文件listitem.xml

<?xml version="1.0" encoding="utf-8"?><TextView xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:textSize="24dip"    android:padding="8dip" />

然后,我们来编写代码。

在编写ContextMenu时必须实现onCreateContextMenu()。执行点击事件由onContextItemSelected()实现。

代码:

package com.example.testmenu;import android.os.Bundle;import android.app.Activity;import android.view.ContextMenu;import android.view.Menu;import android.view.MenuInflater;import android.view.MenuItem;import android.view.View;import android.view.ContextMenu.ContextMenuInfo;import android.widget.AdapterView;import android.widget.AdapterView.AdapterContextMenuInfo;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.TextView;public class MainActivity extends Activity {private static final int MENU_FILE_1 = Menu.FIRST;private static final int MENU_EXIT_2 = Menu.FIRST + 1;private static final int MENU_EDIT_3 = Menu.FIRST + 2;private static final int MENU_DELETE = Menu.FIRST + 3;String[] phones = {"HTC Rezound",  "Samsung Galaxy S II Skyrocket",     "Samsung Galaxy Nexus", "Motorola Droid Razr",     "Samsung Galaxy S", "Samsung Epic Touch 4G",     "iPhone 4S", "HTC Titan"    };    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                ListView listView = (ListView) findViewById(R.id.list01);                ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.listitem,        phones);                listView.setAdapter(adapter);                registerForContextMenu(listView);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        //getMenuInflater().inflate(R.menu.activity_main, menu);    MenuInflater menuInflater = getMenuInflater();    menuInflater.inflate(R.menu.my_menu, menu);        return true;    }        @Override    public void onCreateContextMenu(ContextMenu menu, View v,    ContextMenuInfo menuInfo) {    // TODO Auto-generated method stub    if (v.getId() == R.id.list01) {    AdapterView.AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;        menu.setHeaderTitle(phones[info.position]);    menu.add(0, MENU_EDIT_3, 0, R.string.edit);    menu.add(0, MENU_DELETE, 0, R.string.delete);    }    }        @Override    public boolean onContextItemSelected(MenuItem item) {    // TODO Auto-generated method stub    TextView text = (TextView) findViewById(R.id.footer);        switch (item.getItemId()) {case MENU_EDIT_3:text.setText("Edit Selected");return true;case MENU_DELETE:text.setText("Delete Selected");return true;default:return super.onContextItemSelected(item);}    }        @Override    public boolean onOptionsItemSelected(MenuItem item) {    // TODO Auto-generated method stub    switch (item.getItemId()) {case MENU_FILE_1:fileMenu();break;case MENU_EXIT_2:exitMenu();break;default:break;}        return false;    }        private void fileMenu() {    // TODO My-generated method stub    }        private void exitMenu() {    // TODO My-generated method stub    }    }

运行效果:


Android菜单(Menu) - 4_第1张图片



更多相关文章

  1. Android:如何从堆栈中还原ProGuard混淆后的代码
  2. android recovery 主系统代码分析
  3. android底部菜单栏的实现和百度地图API的使用
  4. AndroidManifest.xml文件详解(manifest)
  5. Android怎么用onCreateOptionsMenu()创建菜单

随机推荐

  1. 主题-统一Android应用风格的机制
  2. 下载Android 3.1 SDK 的离线包
  3. Android SDK三种更新失败及其解决办法
  4. Android NDK: WARNING: APP_PLATFORM and
  5. Android实现自定义菜单
  6. 继续折腾Android,TouchPad, Defy
  7. 浅谈安卓性能优化
  8. Android学习心得(一)——绘图
  9. Android软键盘弹出时的界面控制方法
  10. Android中Message机制的灵活应用