当前位置: 代码迷 >> Android >> Android菜单(Menu) - 四
  详细解决方案

Android菜单(Menu) - 四

热度:77   发布时间:2016-05-01 13:30:56.0
Android菜单(Menu) - 4

 

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    }    }

运行效果:





  相关解决方案