3.8、popupWindow和contextMenu

popupWindow和contextMenu都是一种弹窗。我们了解一下即可

popup直接new即可:

xml配置如下:

然后设置他的样式,主要是设置他的contentView。既是他的内容view

我这里设置了day7中的listview

然后想day7那样为listview设置数据,这里注意取得是popup里面的contentView,而不是day10activity的this。

        //把day7中listview抄过来
      //  ListView listView = findViewById(R.id.listView);
  ListView listView =window.getContentView().findViewById(R.id.listView);
        //数据源
        String[] objects =new String[]{"这是第一条", "这是第二条"};
        ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>(this,
                R.layout.activity_day7_arrayadapter_item,R.id.textView,objects);
        listView.setAdapter(arrayAdapter);

然后弹出的时候。有个showAtLocation,设置弹出位置。我这里选择了基于activity的整个布局的底部弹出。

我这里是从底部弹出如下。

 

 

contentMenu,一开始我也想new的,解决new出来是他的接口类,并且还没有实现子类

查了一下发现他是已经藏在我们activity中了,需要先注册然后重新相应方法既可以使用

1.在activity的onCreate(...)方法中为一个view注册上下文菜单

2.在onCreateContextMenuInfo(...)中生成上下文菜单。

3.在onContextItemSelected(...)中响应上下文菜单项。

生成和响应如下、

 @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
                                   ContextMenu.ContextMenuInfo menuInfo) {
        // set context menu title
        menu.setHeaderTitle("条目");
        // add context menu item
        menu.add(0, 1, Menu.NONE, "按钮中的弹窗1");
        menu.add(0, 2, Menu.NONE, "按钮中的弹窗2");
  }
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        // 得到当前被选中的item信息
        AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();

        switch(item.getItemId()) {
            case 1:
            // do something
            break;
            case 2:
            // do something
            break;
            default:
                return super.onContextItemSelected(item);
        }
        return true;
    }

然后注册的时候绑定一个view,然后长按view就可以触发contentMenu了。

this.registerForContextMenu(findViewById(R.id.contentMenu));

我上面那个给button设置点击事件来触发其实是不对的。

如下

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值