【Android 开发教程】上下文菜单

来源:互联网 发布:淘宝买玩具枪犯法吗 编辑:程序博客网 时间:2024/06/04 20:33

本章节翻译自《Beginning-Android-4-Application-Development》,如有翻译不当的地方,敬请指出。

原书购买地址http://www.amazon.com/Beginning-Android-4-Application-Development/dp/1118199545/


在上一节,我们已经知道了在按MENU键的时候,如何显示选项菜单。但是,除了选项菜单,你也可以显示一个上下文菜单。上下文菜单通常是和activity中的组件相关联的。当用户长按一个组件的时候,它的上下文菜单就会被触发。例如,用户长按一个Button,一个上下文菜单就有可能被显示。

如果想要把一个组件与一个上下文菜单联系在一起,就需要在组件上面调用setOnCreateContextMenuListener()。

下面展示如何显示一个上下文菜单(Context Menu)。

1. 使用之前的工程,修改main.xml。

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <TextView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="@string/hello" />        <Button        android:id="@+id/button1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="Click and hold on it" /></LinearLayout>

2. 在MenusActivity.java中添加一些代码。

public class MenusActivity extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                Button btn = (Button) findViewById(R.id.button1);        btn.setOnCreateContextMenuListener(this);    }        @Override    public void onCreateContextMenu(ContextMenu menu, View view,    ContextMenuInfo menuInfo)    {         super.onCreateContextMenu(menu, view, menuInfo);         CreateMenu(menu);    }        @Override    public boolean onCreateOptionsMenu(Menu menu) {        ......    }        @Override    public boolean onOptionsItemSelected(MenuItem item)    {         return MenuChoice(item);    }        private void CreateMenu(Menu menu)    {        ......      }    private boolean MenuChoice(MenuItem item)    {        ......    }}

3. 按F11在模拟器上面调试。当点击Button并维持一段时间后,上下文菜单显出出来了。


在上面的例子中,我们调用了button的setOnCreateContextMenuListener()方法,是button与上下文菜单关联到了一起。

当上下文菜单中了某一项被点击时,onContextItemSelected()这个方法就会被触发。

注意,上下文菜单中的快捷键是不起作用的。如果想要使快捷键起作用,需要调用setQuertyMode()方法。

 private void CreateMenu(Menu menu)    {        menu.setQwertyMode(true);        MenuItem mnu1 = menu.add(0, 0, 0, "Item 1");        {            mnu1.setAlphabeticShortcut('a');            mnu1.setIcon(R.drawable.ic_launcher);        }        ......    }



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝网下单忘了用返利网怎么办 该地域无法观看此直播怎么办 宝宝喝了有活虫的奶粉怎么办 淘宝商家店铺状态异常怎么办 淘宝购物提示买家信息错误怎么办 苹果淘宝占用空间大怎么办 苹果手机淘宝占内存太大怎么办 苹果手机淘宝图标找不到了怎么办 苹果手机看淘宝很卡怎么办 苹果手机淘宝忘了密码怎么办 苹果手机更新后淘宝打不开怎么办 淘宝买到苹果翻新机怎么办 淘宝网密码忘了怎么办 淘宝改密码要拍摄脸部怎么办 苹果一体机键盘没反应怎么办 淘宝买东西退货卖家拒绝怎么办? 淘宝被限制下单怎么办 淘宝扫码登录后怎么办 花呗选项被隐藏怎么办 新换手机支付宝怎么办 ih5点击按钮跳转页面怎么办 sap点安装程序没反应怎么办 淘宝店账号忘了怎么办 点击电脑桌面图标没反应怎么办 为什么淘宝打不开已停止运行怎么办 移动宽带打不开淘宝网怎么办 淘宝发布宝贝没有品牌怎么办 烫了卷发显老怎么办 唯品会商品不支持退换货怎么办 京东没有自提怎么办 不支持七天无理由的商品怎么办 淘宝评价忘记点亮星星怎么办 淘宝宝贝权重降低了该怎么办 换卡支付宝账号怎么办 支付宝免密支付无法关闭怎么办 手机换了支付宝怎么办 支付宝版本过低怎么办 支付宝无故扣钱怎么办 支付宝里面的钱不见了怎么办 支付宝还不起钱怎么办 支付宝借不到钱怎么办