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>
上下文菜单:一个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>
相关文章推荐
- unity资源包的依赖关系(1)
- JAVA基础之interface
- 开发中常用到的一些脚本
- IOS抓包
- NYOJ-最大岛屿
- 接口
- java常用排序算法
- java常用排序算法
- JAVA基础之final关键字
- java常用排序算法
- Xilinx FPGA中RS编码IP核之Generator Start
- C语言 抽象数据类型ADT
- mvn镜像
- MATLAB 神经网络基础(3)
- spring笔记(二)---基于XML的Bean装配
- instancetype、id、NSObject的区别
- 传智.燕青Mybatis教程一
- XML编程技术
- 使用QGridLayout布局实现翻页效果
- Android代码中如何获取控件宽高