美文网首页Android开发经验谈
Android MenuItem 自定义长按事件

Android MenuItem 自定义长按事件

作者: 古舟咕咕 | 来源:发表于2018-08-01 19:58 被阅读35次

    不知道大家有没有发现,我们添加一个MenuItem,如果它显示在ActionBar上,长按时就会出现一个Toast来提示Menu的名字,比如下图的更多

    图片来自酷安客户端

    有的时候我们不需要这个Toast,或者说长按MenuItem的时候需要做一些其他的事情,该怎么办呢?

    实现过程

    首先我们先获取该MenuItemView

    View menu_more = findViewById(R.id.menu_more); 
    

    然后给它设置一个长按监听器:

    menu_more.setOnLongClickListener(new View.OnLongClickListener() {
                    @Override
                    public boolean onLongClick(View v) {
                        // TODO: Implement this method
                        return true;
                    }
                });
    

    在这个监听器中什么也不做,你会发现,长按MenuItemToast消失了!这时,长按还会有一个短振动,如果不需要振动,可以更改上方代码中return true;return false;就可以了。当然,如果你有别的需求,都可以在监听器中实现。

    注意事项

    获取MenuItemView需要在Menu创建之后才能获取,因此我们不能把代码写在onCreate()方法中,需要写在
    onCreateOptionsMenu()方法中。另外,这段代码要放到新线程中处理才会生效。

    相关代码

    MainActivity相关代码:

    @Override
        public boolean onCreateOptionsMenu(Menu menu){
            MenuInflater inflater=getMenuInflater();
            inflater.inflate(R.menu.menu_main,menu);
            new Handler().post(new Runnable(){
                    @Override
                    public void run(){
                        View menu_more=findViewById(R.id.menu_more);
                        menu_more.setOnLongClickListener(new View.OnLongClickListener(){
                                @Override
                                public boolean onLongClick(View v){
                                    // TODO: Implement this method
                                    return true;
                                }
                            });
                    }
                });
            return true;
        }
    

    相关文章

      网友评论

        本文标题:Android MenuItem 自定义长按事件

        本文链接:https://www.haomeiwen.com/subject/mxorvftx.html