Menu菜单和PopupWindow弹窗

PopupWindow弹窗在这里插入图片描述

步骤

1、自定义一个xml文件,在xml内写要展示的内容
2、把代码封装到showPopupWindow()内,

     public void show_popuwindow(){
         PopupWindow popupWindow = new PopupWindow(this);
         View view= LayoutInflater.from(MainActivity.this).inflate(R.layout.layout_item,null);

   
        //把布局设置给弹窗
        popupWindow.setContentView(view);
        popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
        popupWindow.setWidth(600);

        //点击外部消失
        popupWindow.setOutsideTouchable(true);
        //设置此参数获得焦点,否则无法点击
        popupWindow.setFocusable(true);

        //在谁下面显示,第一个参数写谁
      //        popupWindow.showAsDropDown(textView,100,100);

        popupWindow.showAtLocation(view, Gravity.CENTER,100,100);

    }

3、在监听事件添加showPopupWindow()

 textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                show_popuwindow();
            }
        });

系统菜单OptionsMenu

在这里插入图片描述重写onCreateOptionsMenu(),在这个方法添加菜单内容,在监听里面根据itemID分辨功能

@Override
    public boolean onCreateOptionsMenu(Menu menu) {

        menu.add(1,4,4,"红色").setIcon(R.drawable.a);
        menu.add(1,5,1,"蓝色").setIcon(R.drawable.a);
        menu.add(1,6,3,"黑色").setIcon(R.drawable.a);
        menu.add(1,7,2,"黄色").setIcon(R.drawable.a);

        SubMenu sm = menu.addSubMenu("子菜单");
        sm.add(1,15,1,"子菜单");

        menu.addSubMenu(1,2,3,"子菜单1");

        menu.addSubMenu(1,3,1,"子菜单2");
        menu.addSubMenu(1,1,5,"子菜单3");


        return true;

    }
 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case 1:
                Toast.makeText(this, "菜单3", Toast.LENGTH_SHORT).show();
                break;
            case 2:
                Toast.makeText(this, "菜单1", Toast.LENGTH_SHORT).show();

                break;
            case 3:
                Toast.makeText(this, "菜单2", Toast.LENGTH_SHORT).show();

                break;
            case 4:
                textView.setTextColor(Color.RED);
                break;
            case 5:
                textView.setTextColor(Color.BLUE);
                break;
            case 6:
                textView.setTextColor(Color.BLACK);
                break;
            case 7:
                textView.setTextColor(Color.YELLOW);
                break;
        }

在这里插入图片描述

上下文菜单ContextMenu

在这里插入图片描述
步骤
1、在新建文件夹menu内自定义menu布局xml文件,写入要展示的内容
2、重写onCreateContextMenu() 用菜单布局填充器导入自定义菜单布局
3、重写onContextItemSelected()设置监听
4、registerForContextMenu(view) 为控件添加啊长按监听并将菜单绑定到这个菜单上

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_three);
        listView=findViewById(R.id.listView);

        for (int i = 0; i < 30; i++) {
            datalist.add(i);
        }
        ArrayAdapter arrayAdapter = new ArrayAdapter<>(this, R.layout.support_simple_spinner_dropdown_item, datalist);
        listView.setAdapter(arrayAdapter);
        //要展现出上下文菜单效果,必须注册  不能设置图片
        registerForContextMenu(listView);


    }

    //上下文菜单
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
       //菜单布局填充器
        getMenuInflater().inflate(R.menu.mymenu,menu);
        super.onCreateContextMenu(menu, v, menuInfo);

    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {

        switch (item.getItemId()){
            case R.id.item1:
                Toast.makeText(this, "选项1", Toast.LENGTH_SHORT).show();

                break;
            case R.id.item2:
                Toast.makeText(this, "选项2", Toast.LENGTH_SHORT).show();

                break;
            case R.id.item3:
                Toast.makeText(this, "选项3", Toast.LENGTH_SHORT).show();

                break;
        }

        return true;

    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现该功能需要先创建一个按钮,然后在按钮的点击事件中创建一个 PopupWindow 对象。在 PopupWindow 中,可以设置一个布局文件,该文件会展示在弹窗中。接下来,可以为弹窗中的按钮设置一个点击事件,通过点击事件再创建一个 PopupWindow 对象,展示新的弹窗层。 具体实现步骤如下: 1. 创建一个按钮,设置按钮的点击事件 2. 在点击事件中使用 PopupWindow 类创建一个弹窗对象,并且设置它的布局文件 3. 获取布局文件中的子视图,并在子视图中为按钮设置点击事件 4. 在按钮的点击事件中创建一个新的 PopupWindow 对象,然后为它设置另一个布局文件,展示新的弹窗层 关于具体的代码实现,你可以参考下面的示例代码: ``` kotlin // 创建一个按钮 val button = Button(this) button.text = "点击弹窗" button.setOnClickListener(View.OnClickListener { // 创建一个 PopupWindow 对象 val popupWindow = PopupWindow(this) // 设置弹窗的布局文件 val view = layoutInflater.inflate(R.layout.popup_window, null) popupWindow.contentView = view // 获取布局文件中的子视图 val popupButton = view.findViewById<Button>(R.id.popup_button) popupButton.setOnClickListener(View.OnClickListener { // 创建一个新的 PopupWindow 对象 val popupWindow2 = PopupWindow(this) // 设置弹窗的布局文件 val view2 = layoutInflater.inflate(R.layout.popup_window_2, null) popupWindow2.contentView = view2 // 显示弹窗 popupWindow2.showAsDropDown(popupButton) }) // 显示弹窗 popupWindow.showAsDropDown(button) }) ``` 在代码中,首先创建一个按钮,并设置它的点击事件。在点击事件中,创建了一个 PopupWindow 对象,然后为它设置了一个布局文件。接着,使用 findViewById() 方法获取布局文件中的子视图,并为它设置了一个点击事件。在点击事件中,又创建了一个新的 PopupWindow 对象,并设置了一个新的布局文件。最后,分别通过 showAsDropDown() 方法显示了两个弹窗层。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值