From 9998ea2ad6a960af838f07ba9a41c7ecf6ee619a Mon Sep 17 00:00:00 2001 From: LZ <2929718516@qq.com> Date: Wed, 25 Dec 2024 22:36:06 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=99=E6=AE=B5=E4=BB=A3=E7=A0=81=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E4=BA=86=E4=B8=80=E4=B8=AA=E5=90=8D=E4=B8=BADropdownM?= =?UTF-8?q?enu=E7=9A=84=E7=B1=BB=EF=BC=8C=E7=94=A8=E4=BA=8E=E5=9C=A8Androi?= =?UTF-8?q?d=E5=BA=94=E7=94=A8=E4=B8=AD=E5=88=9B=E5=BB=BA=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E5=85=B7=E6=9C=89=E4=B8=8B=E6=8B=89=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E7=9A=84=E8=8F=9C=E5=8D=95=E3=80=82=E5=AE=83=E5=85=81=E8=AE=B8?= =?UTF-8?q?=E4=BD=A0=E9=80=9A=E8=BF=87=E6=8C=87=E5=AE=9A=E7=9A=84=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E8=A7=A6=E5=8F=91=E4=B8=80=E4=B8=AA=E5=8C=85=E5=90=AB?= =?UTF-8?q?=E5=A4=9A=E4=B8=AA=E8=8F=9C=E5=8D=95=E9=A1=B9=E7=9A=84=E5=BC=B9?= =?UTF-8?q?=E5=87=BA=E8=8F=9C=E5=8D=95=E3=80=82=E4=BD=A0=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E6=8C=89=E9=92=AE=E7=9A=84=E8=83=8C=E6=99=AF?= =?UTF-8?q?=E3=80=81=E6=A0=87=E9=A2=98=EF=BC=8C=E4=BB=A5=E5=8F=8A=E4=B8=BA?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E9=A1=B9=E8=AE=BE=E7=BD=AE=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E7=9B=91=E5=90=AC=E5=99=A8=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DropdownMenu.java | 56 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 DropdownMenu.java diff --git a/DropdownMenu.java b/DropdownMenu.java new file mode 100644 index 0000000..afdac8e --- /dev/null +++ b/DropdownMenu.java @@ -0,0 +1,56 @@ +/* + * 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. + */ + +// 定义一个名为DropdownMenu的公开类 +public class DropdownMenu { + // 声明一个Button类型的私有成员变量mButton,用于存储下拉按钮 + private Button mButton; + // 声明一个PopupMenu类型的私有成员变量mPopupMenu,用于存储弹出的菜单 + private PopupMenu mPopupMenu; + // 声明一个Menu类型的私有成员变量mMenu,用于存储菜单项 + private Menu mMenu; + + // 构造方法,初始化DropdownMenu对象 + public DropdownMenu(Context context, Button button, int menuId) { + mButton = button; // 将传入的Button对象赋值给mButton + mButton.setBackgroundResource(R.drawable.dropdown_icon); // 设置按钮的背景资源为dropdown_icon + mPopupMenu = new PopupMenu(context, mButton); // 创建一个新的PopupMenu对象,并将其与mButton绑定 + mMenu = mPopupMenu.getMenu(); // 获取PopupMenu中的Menu对象 + mPopupMenu.getMenuInflater().inflate(menuId, mMenu); // 使用menuId指定的XML布局文件来填充Menu对象 + mButton.setOnClickListener(new OnClickListener() { // 为mButton设置点击监听器 + public void onClick(View v) { + mPopupMenu.show(); // 当按钮被点击时,显示PopupMenu + } + }); + } + + // 设置PopupMenu的菜单项点击监听器 + public void setOnDropdownMenuItemClickListener(OnMenuItemClickListener listener) { + if (mPopupMenu != null) { + mPopupMenu.setOnMenuItemClickListener(listener); // 为PopupMenu设置菜单项点击监听器 + } + } + + // 根据ID查找菜单项 + public MenuItem findItem(int id) { + return mMenu.findItem(id); // 在Menu对象中查找具有指定ID的菜单项,并返回它 + } + + // 设置按钮的标题 + public void setTitle(CharSequence title) { + mButton.setText(title); // 将传入的CharSequence对象设置为按钮的标题 + } +} \ No newline at end of file