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.
xiaomi-Notes/DropdownMenu.java

91 lines
3.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.

/*
* Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.micode.notes.ui;
import android.content.Context;
// 引入 Context 类,提供访问应用环境的功能,如启动活动、获取系统服务、访问资源等。
import android.view.Menu;
// 引入 Menu 类,定义菜单的结构,通常用于上下文菜单、选项菜单等。
import android.view.MenuItem;
// 引入 MenuItem 类,代表菜单中的一项,可以设置标题、图标等属性并绑定点击事件。
import android.view.View;
// 引入 View 类,所有 UI 控件的基类,处理控件的显示和用户交互(如点击、拖动等)。
import android.view.View.OnClickListener;
// 引入 OnClickListener 接口,用于处理视图(如按钮)的点击事件。
import android.widget.Button;
// 引入 Button 类,用于在界面中创建按钮控件,用户点击按钮时可以触发某个操作。
import android.widget.PopupMenu;
// 引入 PopupMenu 类,表示一个弹出式菜单,通常用于显示上下文菜单或按钮点击后的菜单。
import android.widget.PopupMenu.OnMenuItemClickListener;
// 引入 OnMenuItemClickListener 接口,用于处理 PopupMenu 中菜单项的点击事件。
import net.micode.notes.R;
// 引入 R 类自动生成的资源类用于访问应用的资源文件如布局、字符串、ID 等)。
// DropdownMenu 类用于显示一个下拉菜单
public class DropdownMenu {
// 成员变量
private Button mButton; // 按钮,用于触发下拉菜单显示
private PopupMenu mPopupMenu; // 弹出菜单
private Menu mMenu; // 菜单对象,用于管理菜单项
// 构造函数,初始化按钮和菜单
public DropdownMenu(Context context, Button button, int menuId) {
// 将传入的按钮实例赋值给 mButton
mButton = button;
// 设置按钮的背景资源(这里使用的是一个下拉图标)
mButton.setBackgroundResource(R.drawable.dropdown_icon);
// 初始化 PopupMenu 对象,关联按钮
mPopupMenu = new PopupMenu(context, mButton);
// 获取菜单对象
mMenu = mPopupMenu.getMenu();
// 使用菜单 ID通过菜单资源 XML 文件)填充菜单项
mPopupMenu.getMenuInflater().inflate(menuId, mMenu);
// 设置按钮的点击事件监听器,当按钮被点击时显示弹出菜单
mButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 显示弹出菜单
mPopupMenu.show();
}
});
}
// 设置菜单项点击事件监听器
public void setOnDropdownMenuItemClickListener(OnMenuItemClickListener listener) {
// 如果 mPopupMenu 已经初始化,则设置菜单项点击事件监听器
if (mPopupMenu != null) {
mPopupMenu.setOnMenuItemClickListener(listener);
}
}
// 根据 ID 查找菜单项
public MenuItem findItem(int id) {
return mMenu.findItem(id);
}
// 设置按钮的文本(通常用于显示当前菜单的标题或提示)
public void setTitle(CharSequence title) {
mButton.setText(title);
}
}