Android 小程序右上角弹出菜单扩展

本文介绍如何在小程序弹出菜单上扩展自定义选项并响应用户点击事件。

操作步骤

  1. 确保 mp_ta_showOptionMenu 配置已开启,详情参考 容器配置

  2. 使用 TinyPopMenuItem.Builder 类创建 TinyPopMenuItem 对象。

    • Builder 类支持设置选项的名称、图标(支持 URL 和 Drawable )及事件回调对象。

    • 调用 Builder 类 setId 方法须保证 ID 唯一性。

  3. 事件回调对象的 onClick 方法的第二个参数携带小程序的 appId 以及弹出菜单所在小程序页面的具体路径。

  4. 在打开小程序前将 TinyPopMenuProvider 实例对象设置到容器。

代码示例

H5Utils.setProvider(TinyPopMenuProvider.class.getName(), new TinyPopMenuProvider() {
    @Override
    public List<TinyPopMenuItem> fetchMenuItems(String appId) {
        List<TinyPopMenuItem> items = new ArrayList<>();
        TinyPopMenuItem urlItem = new TinyPopMenuItem.Builder()
                .setId("1000")
                .setIconUrl("https://gw-office.alipayobjects.com/basement_prod/3d46378a-6e4f-4aa1-820e-fd16da76b457.png")
                .setName("关于")
                .setCallback(new TinyPopMenuItem.TinyPopMenuItemClickListener() {
                    @Override
                    public void onClick(Context context, Bundle bundle) {
                        String appId = bundle.getString("appId");
                        String path = bundle.getString("page");
                        Toast.makeText(context, "应用ID=" + appId + ",页面=" + path, Toast.LENGTH_LONG).show();
                    }
                })
                .build();
        items.add(urlItem);
        TinyPopMenuItem localItem = new TinyPopMenuItem.Builder()
                .setId("1001")
                .setIcon(getResources().getDrawable(R.drawable.smile))
                .setName("启动")
                .setCallback(new TinyPopMenuItem.TinyPopMenuItemClickListener() {
                    @Override
                    public void onClick(Context context, Bundle bundle) {
                        Toast.makeText(context, "启动" + bundle.toString(), Toast.LENGTH_LONG).show();
                    }
                })
                .build();
        items.add(localItem);
        return items;
    }
});