0
点赞
收藏
分享

微信扫一扫

安卓菜单选项 Popup_Menu / Context_Menu / Option_Menu


Option_Menu 右上角的菜单

安卓菜单选项 Popup_Menu / Context_Menu / Option_Menu_java


optionmenu.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"
tools:context="${relativePackage}.${activityClass}" >

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="ContextMenu>>" />

</RelativeLayout>

mymenu.xml

这个文件需要自己在​​res​​​里面创建文件夹​​menu​

安卓菜单选项 Popup_Menu / Context_Menu / Option_Menu_java_02

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/item1" android:title="添加" />
<item android:id="@+id/item2" android:title="删除" />
<item android:id="@+id/item3" android:title="修改" />
<item android:id="@+id/item4" android:title="查询" />
<item android:id="@+id/item5" android:title="刷新" />
</menu>

Option_Menu.java

import android.app.Activity;
import android.content.Intent;
import android.content.ClipData.Item;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class Option_Menu extends Activity {

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

Button button1 = (Button)findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
new Intent(Option_Menu.this,Context_Menu.class);
Intent intent = new Intent(Option_Menu.this,Context_Menu.class);
startActivity(intent);
}
});
}
//创建选项菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) { //第一次创建菜单时调用
//getMenuInflater()获取菜单填充器 inflate填充菜单
getMenuInflater().inflate(R.menu.mymenu, menu);
Toast.makeText(this, "你点击了 菜单 按钮", 3000).show();

return true;
}
//给选项菜单添加事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.item1:
Toast.makeText(this, "你点击了 添加 按钮", 3000).show();
break;
case R.id.item2:
Toast.makeText(this, "你点击了 删除 按钮", 3000).show();
break;
case R.id.item3:
Toast.makeText(this, "你点击了 修改 按钮", 3000).show();
break;
case R.id.item4:
Toast.makeText(this, "你点击了 查询 按钮", 3000).show();
break;
case R.id.item5:
Toast.makeText(this, "你点击了 刷新 按钮", 3000).show();
break;

default:
break;
}
return super.onOptionsItemSelected(item);
}

//动态的修改选项菜单
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
//移除菜单文件
menu.removeItem(R.id.item5);
//更新菜单
invalidateOptionsMenu();
return super.onPrepareOptionsMenu(menu);
}

}

Context_Menu 上下文菜单

长按才有反映

安卓菜单选项 Popup_Menu / Context_Menu / Option_Menu_ide_03

androidManifest.xml

<activity
android:name=".Context_Menu"
android:label="@string/app_name" >
</activity>

contextmenu.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<ListView android:id="@+id/list1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="PopupMenu>>" />

</RelativeLayout>

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

public class Context_Menu extends Activity{

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

ListView listView1 = (ListView)findViewById(R.id.list1);
String[] item = {"文件1","文件2","文件3","文件4"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(Context_Menu.this, android.R.layout.simple_dropdown_item_1line, item);
listView1.setAdapter(adapter);
//给视图提供上下文菜单
registerForContextMenu(listView1);

Button button2 = (Button)findViewById(R.id.button2);
button2.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
Intent intent = new Intent(Context_Menu.this,Popup_Menu.class);
startActivity(intent);
}
});
}
//创建上下文菜单
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {//1.视图长按是显示的菜单对象 2.完成长按操作的视图 3.附加信息
super.onCreateContextMenu(menu, v, menuInfo);

menu.setHeaderTitle("文件操作");
//1.组ID 2.菜单项ID(itemID) 3.顺序 4.显示的信息
menu.add(1,2,1,"全选");
menu.add(1,1,1,"复制");
menu.add(1,3,0,"粘贴");

}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 2:
Toast.makeText(this, "你点击了 全选 按钮", 3000).show();
return true;
case 1:
Toast.makeText(this, "你点击了 复制 按钮", 3000).show();
return true;
case 3:
Toast.makeText(this, "你点击了 粘贴 按钮", 3000).show();
return true;
default:
return false;
}
}
}

Popup_Menu

就是给一个textView类似的内容 加一个点击菜单

安卓菜单选项 Popup_Menu / Context_Menu / Option_Menu_android_04


AndroidManifest.xml

下面这个没用 在首页设计后面代码时

<activity
android:name=".Popup_Menu"
android:label="@string/app_name" >
</activity>

main_activity .xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="15dp"
android:layout_marginTop="15dp"
android:text="Hello!"
android:textSize="25sp" />

</RelativeLayout>

MainActivity .java

import android.app.Activity;
import android.os.Bundle;
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.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.PopupMenu.OnMenuItemClickListener;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

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

TextView textView = (TextView) findViewById(R.id.textView1);

textView.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// 创建弹出式菜单对象(最低版本11)
android.widget.PopupMenu popup = new android.widget.PopupMenu(
MainActivity.this, arg0);// 第二个参数是绑定的那个view
// 获取菜单填充器
MenuInflater inflater = popup.getMenuInflater();
// 填充菜单
inflater.inflate(R.menu.mymenu, popup.getMenu());
// 绑定菜单项的点击事件
popup.setOnMenuItemClickListener(new OnMenuItemClickListener() {

@Override
public boolean onMenuItemClick(MenuItem arg0) {
switch (arg0.getItemId()) {
case R.id.item1:
Toast.makeText(MainActivity.this, "你点击了 添加 按钮",
3000).show();
return true;
case R.id.item2:
Toast.makeText(MainActivity.this, "你点击了 删除 按钮",
3000).show();
return true;
case R.id.item3:
Toast.makeText(MainActivity.this, "你点击了 修改 按钮",
3000).show();
return true;
case R.id.item4:
Toast.makeText(MainActivity.this, "你点击了 查询 按钮",
3000).show();
return true;
case R.id.item5:
Toast.makeText(MainActivity.this, "你点击了 刷新 按钮",
3000).show();
return true;

default:
return false;
}

}
});
// 显示(这一行代码不要忘记了)
popup.show();
}
});

}

}


举报

相关推荐

0 条评论