|
|
// Apache许可证协议
|
|
|
package net.micode.notes.ui;
|
|
|
|
|
|
import android.content.Context;
|
|
|
import android.view.Menu;
|
|
|
import android.view.MenuItem;
|
|
|
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;
|
|
|
// 一个 Button 控件,用于显示菜单的标题,以及一个 PopupMenu 对象,用于显示菜单项。在构造函数中,该类接受一个菜单资源 ID,并使用 mPopupMenu.getMenuInflater().inflate() 方法从 XML 资源中加载菜单项,然后将菜单项添加到 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(v -> mPopupMenu.show());
|
|
|
// 重写了 setOnClickListener() 方法,以便在用户点击 Button 控件时显示下拉菜单。
|
|
|
}
|
|
|
// 在 Button 控件上注册一个单击事件监听器,并在该监听器中实现下拉菜单的显示逻辑。
|
|
|
|
|
|
public void setOnDropdownMenuItemClickListener(OnMenuItemClickListener listener) {
|
|
|
if (mPopupMenu != null) {
|
|
|
mPopupMenu.setOnMenuItemClickListener(listener);
|
|
|
}
|
|
|
}
|
|
|
// setOnDropdownMenuItemClickListener() 方法,用于设置菜单项的点击监听器。通过这个方法,应用程序可以在用户选择菜单项时执行相应的操作。
|
|
|
|
|
|
public MenuItem findItem(int id) {
|
|
|
return mMenu.findItem(id);
|
|
|
}//findItem() 方法用于查找指定 ID 的菜单项
|
|
|
|
|
|
public void setTitle(CharSequence title) {
|
|
|
mButton.setText(title);
|
|
|
}//用于设置菜单的标题。
|
|
|
}
|