您的位置:首页 > 其它

ContextMenu---上下文菜单

2016-05-22 14:17 363 查看
选择菜单:一个菜单对应一个Activity.

上下文菜单:一个VIew对应一个菜单(长按指定的View会弹出上下文菜单)

选择菜单的实现涉及到的方法:

this.registerForContextMenu(listview);  //给listview注册上下文菜单

onCreateContextMenu(ContextMenu menu, View view,  ContextMenuInfo menuInfo);

onContextItemSelected(MenuItem item)

菜单项的添加分两种方式,xml文件布局静态添加,代码动态添加,添加方式和选择菜单的相同。

demo代码:

package com.example.contextmenu;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.app.Activity;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
showListView();
}

/**
* 设置listview的显示内容
*/
private void showListView() {
ListView listview = (ListView) findViewById(R.id.listview);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, getData());
listview.setAdapter(adapter);
//给listview注册上下文菜单
this.registerForContextMenu(listview);
}

@Override
public void onCreateContextMenu(ContextMenu menu, View view,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, view, menuInfo);
menu.setHeaderTitle("文件操作");
menu.setHeaderIcon(R.drawable.ic_launcher);
//代码中添加菜单项
// menu.add(1, 1, 1, "复制");
// menu.add(1, 2, 1, "粘贴");
// menu.add(1, 3, 1, "剪切");
// menu.add(1, 4, 1, "重命名");
//使用XML添加菜单项
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);

}
@Override
public boolean onContextItemSelected(MenuItem item) {

switch(item.getItemId()) {
case R.id.context_menu_item1:
Toast.makeText(MainActivity.this, "点击复制",Toast.LENGTH_SHORT).show();
break;
case R.id.context_menu_item2:
Toast.makeText(MainActivity.this, "点击粘贴",Toast.LENGTH_SHORT).show();
break;
case R.id.context_menu_item3:
Toast.makeText(MainActivity.this, "点击剪切",Toast.LENGTH_SHORT).show();
break;
case R.id.context_menu_item4:
Toast.makeText(MainActivity.this, "点击重命名",Toast.LENGTH_SHORT).show();
break;

}
return super.onContextItemSelected(item);
}
/**
* 构造listview显示的数据
*
* @return
*/
private ArrayList<String> getData() {
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < 5; i++) {
list.add("文件" + (i + 1));
}
return list;
}

}

menu.main.xml文件

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
android:id="@+id/context_menu_item1"
android:orderInCategory="100"
android:showAsAction="never"
android:title="复制"/>
<item
android:id="@+id/context_menu_item2"
android:orderInCategory="100"
android:showAsAction="never"
android:title="粘贴"/>

<item
android:id="@+id/context_menu_item3"
android:orderInCategory="100"
android:showAsAction="never"
android:title="剪切"/>
<item
android:id="@+id/context_menu_item4"
android:orderInCategory="100"
android:showAsAction="never"
android:title="重命名"/>

</menu>


activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/listview"
/>

</RelativeLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: