You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
* 该类实现了一个下拉菜单用于在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);
}
}