From b4d1e0cf7a26e1b50cc20b8e43097f74715b35bf Mon Sep 17 00:00:00 2001 From: Sunique_L <2758798112@qq.com> Date: Thu, 21 Dec 2023 18:18:36 +0800 Subject: [PATCH] Update DropdownMenu.java --- src/net/micode/notes/ui/DropdownMenu.java | 108 ++++++++++------------ 1 file changed, 47 insertions(+), 61 deletions(-) diff --git a/src/net/micode/notes/ui/DropdownMenu.java b/src/net/micode/notes/ui/DropdownMenu.java index 613dc74..79c74d4 100644 --- a/src/net/micode/notes/ui/DropdownMenu.java +++ b/src/net/micode/notes/ui/DropdownMenu.java @@ -1,61 +1,47 @@ -/* - * 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; -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); - } - } - - public MenuItem findItem(int id) { - return mMenu.findItem(id); - } - - public void setTitle(CharSequence title) { - mButton.setText(title); - } -} +// 声明一个公开的类DropdownMenu,此类属于net.micode.notes.ui包 +public class DropdownMenu { + // 声明一个私有变量mButton,类型为Button,表示一个按钮对象 + private Button mButton; + // 声明一个私有变量mPopupMenu,类型为PopupMenu,表示一个弹出菜单对象 + private PopupMenu mPopupMenu; + // 声明一个私有变量mMenu,类型为Menu,表示一个菜单对象 + private Menu mMenu; + + // 声明一个公开的构造函数,接受三个参数:一个Context对象,一个Button对象和一个int型数据menuId + public DropdownMenu(Context context, Button button, int menuId) { + // 将传入的button赋值给mButton,即mButton就是我们操作的按钮对象 + mButton = button; + // 为mButton设置背景资源,这里是设置成dropdown_icon这个资源 + mButton.setBackgroundResource(R.drawable.dropdown_icon); + // 创建一个新的PopupMenu对象,传入上下文(context)和按钮(mButton)作为参数 + mPopupMenu = new PopupMenu(context, mButton); + // 获取mPopupMenu的菜单对象并赋值给mMenu + mMenu = mPopupMenu.getMenu(); + // 用传入的menuId来加载菜单项,并添加到mMenu中 + mPopupMenu.getMenuInflater().inflate(menuId, mMenu); + // 为mButton设置一个点击事件监听器,当点击mButton时,会执行show方法,将弹出菜单显示出来 + mButton.setOnClickListener(new OnClickListener() { + public void onClick(View v) { + mPopupMenu.show(); + } + }); + } + + // 设置一个菜单项点击事件的监听器,传入一个OnMenuItemClickListener对象作为参数 + public void setOnDropdownMenuItemClickListener(OnMenuItemClickListener listener) { + // 如果mPopupMenu不为null,就将监听器设置给mPopupMenu的菜单项点击事件监听器 + if (mPopupMenu != null) { + mPopupMenu.setOnMenuItemClickListener(listener); + } + } + + // 从mMenu中查找一个菜单项,并返回该菜单项,如果找到的话 + public MenuItem findItem(int id) { + return mMenu.findItem(id); + } + + // 设置mButton的文本内容为传入的CharSequence对象title + public void setTitle(CharSequence title) { + mButton.setText(title); + } +} \ No newline at end of file