/** * 下拉菜单类,用于创建和管理弹出式菜单。 */ public class DropdownMenu { // 下拉按钮 private Button mButton; // 弹出式菜单 private PopupMenu mPopupMenu; // 菜单项 private Menu mMenu; /** * 构造函数。 * @param context 上下文对象,用于获取资源和创建菜单。 * @param button 显示下拉菜单的按钮。 * @param menuId 要加载的菜单资源ID。 */ public DropdownMenu(Context context, Button button, int menuId) { mButton = button; // 设置按钮的背景资源为下拉图标 mButton.setBackgroundResource(R.drawable.dropdown_icon); // 创建PopupMenu实例,关联到按钮 mPopupMenu = new PopupMenu(context, mButton); // 获取菜单实例 mMenu = mPopupMenu.getMenu(); // 从资源文件中加载菜单项 mPopupMenu.getMenuInflater().inflate(menuId, mMenu); // 设置按钮的点击事件监听器,点击时显示菜单 mButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { mPopupMenu.show(); } }); } /** * 设置菜单项点击事件监听器。 * @param listener 菜单项点击事件监听器。 */ public void setOnDropdownMenuItemClickListener(OnMenuItemClickListener listener) { if (mPopupMenu != null) { mPopupMenu.setOnMenuItemClickListener(listener); } } /** * 查找具有指定ID的菜单项。 * @param id 菜单项ID。 * @return 菜单项对象。 */ public MenuItem findItem(int id) { return mMenu.findItem(id); } /** * 设置下拉按钮的标题。 * @param title 标题文本。 */ public void setTitle(CharSequence title) { mButton.setText(title); } }