平时我们看到应用中长安一个文字或者按钮,会弹出菜单,从而选择一些菜单项,那到底是怎样实现的呢?
今天我们就介绍这种菜单(上下文菜单)
创建上下文菜单只需要三步:
1、registerForContextMenu(你要注册的控件):为控件注册ContextMenu。
2、重写public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) :在这里我们主要是去定义菜单。
3、重写public boolean onContextItemSelected(MenuItem item):我们点击一些菜单项时,做出的一些相应。
以下是一个例子:
主Activity代码:
public class MainActivity extends Activity { private TextView context_menu; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); context_menu=(TextView)findViewById(R.id.context_menu); /* * 控件注册 */ registerForContextMenu(context_menu); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // TODO Auto-generated method stub super.onCreateContextMenu(menu, v, menuInfo); /* * 添加菜单项xml文件 */ MenuInflater inflater=new MenuInflater(this); inflater.inflate(R.menu.menu, menu); } /* * ContextMenu事件处理 */ @Override public boolean onContextItemSelected(MenuItem item) { // TODO Auto-generated method stub switch (item.getItemId()) { case R.id.menu1: Toastmake(1); break; case R.id.menu2: Toastmake(2); break; case R.id.menu3: Toastmake(3); break; case R.id.menu4: Toastmake(4); break; case R.id.menu5: Toastmake(5); break; default: break; } return super.onContextItemSelected(item); } /* * 测试事件 */ private void Toastmake(int itemid) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "你点击了菜单项"+itemid, Toast.LENGTH_SHORT).show(); } }
activity_layout.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" > <TextView android:id="@+id/context_menu" android:layout_centerInParent="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="请长按这些文字" android:textSize="40sp" /> </RelativeLayout>
res/menu/menu.xml:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/menu1" android:title="菜单1"/> <item android:id="@+id/menu2" android:title="菜单2"/> <item android:id="@+id/menu3" android:title="菜单3"/> <item android:id="@+id/menu4" android:title="菜单4"/> <item android:id="@+id/menu5" android:title="菜单5"/> </menu>
效果图: