美文网首页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