Option Menu && Context Menu的使用

本文详细解析了Android应用中XML布局文件main.xml的结构与用途,特别是如何实现文本框和编辑框的上下文菜单功能。通过提供具体的XML代码片段和解释,读者可以了解如何在Android应用中灵活地利用上下文菜单来增强用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/contextTextView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="20dp" android:text="长按此文本框,显示文本框上下文菜单" /> <EditText android:id="@+id/contextEditText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="长按编辑文本框,显示编辑文本框的上下文菜单" /> </LinearLayout>

<group>属性
id
menuCategory:对菜单进行分类,定义菜单的优先级,有效值为container、system、secondary和alternative
orderInCategory:一个分类排序整数
checkableBehavior:选择行为,单选,多选还是其他。有效值为none,all和single。
visible
enabled
<item>属性
id
menuCategory:菜单分类
orderInCategory:分类排序
title:菜单标题
titleCondensed:浓缩标题,适合标题太长的时候使用
icon:菜单图标
alphabeticShortcut:字符快捷键
numericShortcut:数字快捷键
checkable:是否可选
checked:是否已经被选
visible
enabled

option_menu.xml

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/item1" android:title="menu 1"> <menu> <group android:id="@+id/group1"> <item android:id="@+id/item7" android:title="menu 1-1"></item> <item android:id="@+id/item8" android:title="menu 1-2"></item> <item android:id="@+id/item9" android:title="menu 1-3"></item> </group> </menu> </item> <item android:id="@+id/item2" android:title="menu 2"> <menu> <group android:id="@+id/group2"> <item android:id="@+id/item10" android:title="menu 2-1"></item> <item android:id="@+id/item11" android:title="menu 2-2"></item> <item android:id="@+id/item12" android:title="menu 2-3"></item> </group> </menu> </item> <item android:id="@+id/item3" android:title="menu 3"></item> <item android:id="@+id/item4" android:title="menu 4"></item> <item android:id="@+id/item5" android:title="about"></item> <item android:id="@+id/item6" android:title="exit"></item> </menu>


MenuExampleActivity.java

package com.zeph.android.menu.example; 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.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class MenuExampleActivity extends Activity { private MenuInflater mi; private EditText mEditText; private TextView mTextView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mEditText = (EditText) findViewById(R.id.contextEditText); mTextView = (TextView) findViewById(R.id.contextTextView); registerForContextMenu(mEditText); registerForContextMenu(mTextView); } @Override public boolean onCreateOptionsMenu(Menu menu) { mi = getMenuInflater(); mi.inflate(R.menu.option_menu, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); switch (id) { case R.id.item5: Toast.makeText(getApplicationContext(), "BenZeph", Toast.LENGTH_SHORT).show(); break; case R.id.item6: finish(); default: break; } return super.onOptionsItemSelected(item); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { if (v.equals(mTextView)) { menu.setHeaderTitle("TextView Menu"); menu.add("TextView Menu 1"); menu.add("TextView Menu 2"); menu.add("TextView Menu 3"); menu.add("TextView Menu 4"); } else if (v.equals(mEditText)) { menu.setHeaderTitle("EditText Menu"); } } }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值