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); } }