zoukankan      html  css  js  c++  java
  • Android使用PopupMenu创建弹出式菜单

    PopupMenu 代表弹出式菜单,它会在指定组件上弹出PopupMenu,在默认情况下PopupMenu会显示在该组件的下方或者上方。PopupMenu可增加多个菜单项,并可以为菜单项增加子菜单。

    实现效果:

    实现步骤:

    步骤一:

    创建主布局文件:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.contentprovide.liuliu.myservice.MainActivity">
    
    
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="弹出菜单"
            android:layout_gravity="bottom"
            />
    
    
    </LinearLayout>

    步骤二:

    创建弹出菜单的资源文件:

    在res目录下创建一个menu资源文件夹

    然后在menu文件夹下创建资源文件aa.xml:

    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:id="@+id/t1"
            android:title="1"
            ></item>
    
        <item
            android:id="@+id/t2"
            android:title="2"
            ></item>
    </menu>
    

    步骤三:

    java代码的实现:

    package com.contentprovide.liuliu.myservice;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.PopupMenu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity {
    
        PopupMenu pop1 = null;//声明需要弹出的菜单,如果有多个菜单,则声明相对应的个数
    
        Button button;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            button = (Button) findViewById(R.id.button);
    
            pop1 = new PopupMenu(this, button);//实例化菜单,并且给定当前菜单需要依附的view
    
            getMenuInflater().inflate(R.menu.aa, pop1.getMenu());//将自定义好的菜单内容添加到指定的菜单中
    
    
            //点击按钮弹出菜单
            findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
    
                    pop1.show();
    
                }
            });
    
    
    
    
    //        给弹出式菜单添加点击事件
            pop1.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {
    
                    switch (item.getItemId()) {
    //                    这里的id是自定义资源菜单里的id
                        case R.id.t1:
                            Toast.makeText(getApplicationContext(), "您点击了菜单t1", Toast.LENGTH_SHORT).show();
                            break;
    
                        case R.id.t2:
                            Toast.makeText(getApplicationContext(), "您点击了菜单t2", Toast.LENGTH_SHORT).show();
    
                            break;
                    }
    
                    return true;
                }
            });
    
    
        }
    
    
    }
  • 相关阅读:
    基于k8s搭建微服务日志收集中心
    分析java堆内存满时那些类占用内存居多
    yizimi 在 DMG 的板子库 (数据结构与算法)
    Contest 3/14
    基础算法训练1
    图论基础训练
    2021.03.09随笔
    树莓派 4B 安装 openEuler
    Docker 学习准备
    关于备案第二个服务器时遇到的问题
  • 原文地址:https://www.cnblogs.com/lyd447113735/p/8353737.html
Copyright © 2011-2022 走看看