zoukankan      html  css  js  c++  java
  • 弹出式菜单(下拉菜单)实现——PopupMenu

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

       使用PopupMenu创建菜单的步骤非常简单,只要如下步骤即可。

    1. 调用new PopupMenu(Context context,View anchor)创建下拉菜单,anchor代表要激发该弹出菜单的组件。
    2. 调用MenuInflater的inflate()方法将菜单资源填充到PopupMenu中。
    3. 调用PopupMenu的show()方法显示弹出式菜单。

        下面的实例示范了使用PopupMenu的功能和用法。

         界面布局文件如下:

    复制代码
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        >
    <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:onClick="onPopupButtonClick"
            android:text="单击我" />
    </LinearLayout>
    复制代码

    该实例的Activity的代入如下:

    复制代码
    package org.crazyit.helloworld;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.PopupMenu;
    import android.widget.Toast;
    
    public class PopupMenuTest extends Activity {
         
        PopupMenu popup=null;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.popup_menu_test);
        }
    
        public void onPopupButtonClick(View button)
        {
            //创建PopupMenu对象
            popup=new PopupMenu(this,button);
            //将R.menu.popup_menu菜单资源加载到popup菜单中
            getMenuInflater().inflate(R.menu.popup_menu,popup.getMenu());
            //为popup菜单的菜单项单击事件绑定事件监听器
            popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener(){
    
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    switch(item.getItemId())
                    {
                    case R.id.exit:
                        //隐藏该对话框
                        popup.dismiss();
                        break;
                    default:
                        //使用Toast显示用户单击的菜单项
                        Toast.makeText(PopupMenuTest.this, "您单击了【"+item.getTitle()+"】菜单项",Toast.LENGTH_SHORT).show();
                    
                    }
                    // TODO Auto-generated method stub
                    return false;
                }
                
            });
            popup.show();
        }
        
        
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.popup_menu_test, menu);
            return true;
        }
    
    }
    复制代码

    上面的程序中第一行粗体字代码创建了一个PopupMenu对象,第二行粗体字代码指定将该R.menu.popup_menu菜单资源文件填充到PopupMenu中,这样即可实现当用户单击界面按钮时弹出Popup菜单。

      运行上面程序将看到如下效果:

    【转】http://www.cnblogs.com/wolipengbo/p/3398603.html

  • 相关阅读:
    程序员代码面试指南:IT名企算法与数据结构题目最优解
    经典排序算法
    Log4j输出格式控制--log4j的PatternLayout参数含义
    常用数据库4 mongodb
    常用数据库2 sqlite及SQL注入
    面试常问-数据库索引实现原理
    自定义web框架
    HTML|CSS之布局相关总结
    C++模板类练习题
    C++中的运算符重载练习题
  • 原文地址:https://www.cnblogs.com/lucky-star-star/p/3857355.html
Copyright © 2011-2022 走看看