Android基础知识--弹出式菜单

本文介绍如何在 Android 应用中实现弹出菜单功能,包括创建 menu 文件夹及 main.xml 文件配置菜单项,修改 base_activity.xml 添加关联控件,并在 BaseAcitivity.java 中实例化并监听菜单项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能的实现方式:
1.在res中新建menu文件夹-->main.xml文件,如下所示:
   <menu xmlns:android="http://schemas.android.com/apk/res/android" >
                <item
                    android:id="@+id/red"
                    android:title="@string/red_title"/>
                 <item
                    android:id="@+id/green"
                    android:title="@string/green_title"/>
                  <item
                    android:id="@+id/blue"
                    android:title="@string/blue_title"/>
   </menu>
2. 对 base_activity.xml文件的修改
      1)给该布局文件一个id方便在BaseAcitivity.java文件中对其进行修改
      2)给弹出式菜单一个关联控件如下所示:
          <ImageView
                android:id="@+id/color"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:layout_gravity="center_vertical"
                android:src="@drawable/txt_color"
            />
3. 在BaseAcitivity.java文件里对每个id进行实例化操作
     case R.id.color:
            Log.d(TAG,"BaseActivity-->onClick-->color");
             popupMenu=new PopupMenu(this,color);//关联该弹出式菜单与该imageview
             getMenuInflater().inflate(R.menu.main, popupMenu.getMenu());//对弹出式菜单进行实例化
             popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                //对每个菜单项进行监听
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    // TODO Auto-generated method stub
                    switch(item.getItemId()){
                    case R.id.red://如果按下的是红色标签
                        Log.d(TAG, "setBackgraound(RED)");
                         //获取当前的layout改变该layout的背景                          
        ((RelativeLayout)getLayoutInflater().inflate(R.layout.base_activity,null))
                               .setBackgroundResource(R.drawable.abcd);
                        Log.d(TAG, "LAYOUT="+(RelativeLayout)getLayoutInflater().inflate(R.layout.base_activity,null));
                        break;
                    case R.id.green:
                        Log.d(TAG, "setBackgraound(GREEN)");                     
                        break;
                    case R.id.blue:
                        Log.d(TAG, "setBackgraound(blue)");
                        break;
                    case R.id.color:
                        popupMenu.dismiss();
                        break;
                     default:
                         Toast.makeText(BaseActivity.this, "you clicked this menu!", Toast.LENGTH_LONG).show();                        

                     } 

调用new PopupMenu(Context context,View ancher)创建下拉菜单,ancher代表激发该弹出式菜单的组件,
            调用MenuInflater的inflater()方法将菜单资源填充到PopupMenu中,
                调用PopMenu的show()方法显示弹出式菜单 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值