如何将动态操作项添加到 android BottomSheet?

How to add dynamic action items to android BottomSheet?

我正在开发一个应用程序,可以实现 BottomSheet 类似 Google material 设计的应用程序。我发现的只是一个可以添加到 Sheet 的静态操作,就像这样使用这个库 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 个操作。有什么想法吗?

顺便说一句,我试图将这个标签 "bottom-sheet" 添加到我的问题中,但我没有这样做的权限。

您可以使用 .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();