【问题标题】:How to add dynamic action items to android BottomSheet?如何将动态操作项添加到 android BottomSheet?
【发布时间】:2015-07-06 08:32:17
【问题描述】:

我正在开发一款应用程序,该应用程序将实现 BottomSheet,例如 Google 材料设计。我发现的只是一个可以添加到工作表的静态动作,就像使用这个库BottomSheet

new BottomSheet.Builder(this).title("title").sheet(R.menu.list).listener(new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        switch (which) {
                            case R.id.help:
                                q.toast("Help me!");
                                break;
                        }
                    }
                }).show();

在这里,R.menu.list 将静态动作加载到 BottomSheet 中。 我想要的是向它添加动态操作项,例如,ArrayList 的操作。有什么想法吗?

顺便说一句,我试图在我的问题中添加这个标签“底页”,但我没有权限。

【问题讨论】:

    标签: android material-design bottom-sheet


    【解决方案1】:

    你可以用 .sheet() 方法做到这一点:

    BottomSheet bottomSheet = new BottomSheet.Builder(getActivity())
                        .title(R.string.sharing_warning_note)
                        .sheet(R.id.menu_facebook, facebookDrawable,
                                getString(R.string.publishing_settings_facebook))
                        .sheet(R.id.menu_vkontakte, vkontakteDrawable,
                                getString(R.string.publishing_settings_vkontakte))
                        .divider()
                        .listener(new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                switch (which) {
                                    case R.id.menu_facebook:
                                        share(SocialNetworkType.FACEBOOK);
                                        break;
                                    case R.id.menu_vkontakte:
                                        share(SocialNetworkType.VK);
                                        break;
                                    default:
                                }
                            }
                        })
                        .build();
                bottomSheet.show();
    

    -更新-

    使用数组列表你可以这样:

    BottomSheet bottomSheet = new BottomSheet.Builder(getActivity());
    for (int i = 0; i<list.size(); i++) {
         String s = list.get(i);
         bottomSheet.sheet(i, null, s);
    }
    bottomSheet.build();
    bottomSheet.show();
    

    【讨论】:

    • 最后,这些菜单项是静态的。我有一个ArrayList 需要加载到工作表中的操作,这无济于事!我不想要R.id.someItem。我需要在其中加载某种ArrayList
    • 它不是静态的,你可以这样写:.sheet(1, icon, "blabla") 在我的例子中,id 已经在 res/ids.xml 中声明,但它不是一个菜单。
    • 您的解决方案使用现有的 resourceId,即R.id.menu_facebook,但我不希望这样。没有任何想法可以这样做:sheet(new ArrayList) 吗?或类似的东西?
    • 您可以使用任何正整数,而不是使用现有的 id。我已经用 ArrayList of Strings 更新了我的答案。
    • 谢谢,我很感激 :)
    猜你喜欢
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 2018-09-02
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多