/* * 该类实现了一个下拉菜单,用于在Android应用中展示一个带有图标的按钮,点击按钮后弹出菜单选项。 */ package net.micode.notes.ui; import android.content.Context; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.PopupMenu; import android.widget.PopupMenu.OnMenuItemClickListener; import net.micode.notes.R; // 导入资源文件 public class DropdownMenu { private Button mButton; // 按钮对象 private PopupMenu mPopupMenu; // 弹出菜单对象 private Menu mMenu; // 菜单对象 // 构造方法,初始化下拉菜单 public DropdownMenu(Context context, Button button, int menuId) { mButton = button; mButton.setBackgroundResource(R.drawable.dropdown_icon); // 设置按钮背景图标 mPopupMenu = new PopupMenu(context, mButton); // 创建弹出菜单对象 mMenu = mPopupMenu.getMenu(); // 获取菜单对象 mPopupMenu.getMenuInflater().inflate(menuId, mMenu); // 从资源文件加载菜单项 mButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { mPopupMenu.show(); // 点击按钮时显示弹出菜单 } }); } // 设置菜单项点击事件监听器 public void setOnDropdownMenuItemClickListener(OnMenuItemClickListener listener) { if (mPopupMenu != null) { mPopupMenu.setOnMenuItemClickListener(listener); } } // 在菜单中查找指定ID的菜单项 public MenuItem findItem(int id) { return mMenu.findItem(id); } // 设置按钮标题 public void setTitle(CharSequence title) { mButton.setText(title); } }