首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正在删除对话框列表底部的空格

正在删除对话框列表底部的空格
EN

Stack Overflow用户
提问于 2013-07-12 01:26:25
回答 3查看 2.2K关注 0票数 1

我有它,当你打开对话框窗口时,在5个选项下面有一个空白区域...在Eclipse中的DumpView层次结构中,它说它是(2) FrameLayout 34,894。

我的代码是:

代码语言:javascript
运行
复制
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                    builder.setTitle(R.string.sync_frequency);
                    ListView listView = new ListView(getActivity());
                    String[] syncOptions = mSyncOptions;
                    ArrayAdapter<String> modeAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.select_dialog_singlechoice, android.R.id.text1, syncOptions);
                    builder.setSingleChoiceItems(modeAdapter, 0, new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                            int selectedPosition = ((AlertDialog)dialog).getListView().getCheckedItemPosition();
                            Log.d(TAG, "Position is " + selectedPosition);

                        }
                    });
                    builder.setView(listView);
                    builder.setNegativeButton(R.string.sync_cancel,null);
                    final Dialog dialog = builder.create();
                    dialog.getWindow().setLayout(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
                    dialog.show();

我正在努力摆脱那里的空白……我不确定如何摆脱它……我甚至试过dialog.getWindow().setLayout(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

但这并不会切断空间。我猜是因为它认为它是一个框架布局,而不是空格。谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-12 01:33:51

您是否尝试过将布局参数设置为listView (在膨胀到对话框之前)?

代码语言:javascript
运行
复制
ListView listView = new ListView(getActivity());
listView.setLayout(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
.
.
.
builder.setView(listView);

另一种选择是不在对话框中使用setView,而是使用setAdapter(),如下例所示:

代码语言:javascript
运行
复制
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle(R.string.sync_frequency);
    ListView listView = new ListView(getActivity());
    String[] syncOptions = mSyncOptions;
    ArrayAdapter<String> modeAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.select_dialog_singlechoice, android.R.id.text1, syncOptions);
    builder.setAdapter(modeAdapter, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });
    builder.setNegativeButton(R.string.sync_cancel,null);
    final Dialog dialog = builder.create();
    dialog.show();
票数 2
EN

Stack Overflow用户

发布于 2013-07-12 01:37:52

这只发生在API级别的10+设备上。

要使用没有这些空间问题的旧对话框主题,请按如下方式初始化AlertDialog.Builder:

代码语言:javascript
运行
复制
AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(getActivity(), android.R.style.Theme_Dialog));
票数 0
EN

Stack Overflow用户

发布于 2014-09-05 22:02:52

通过完全忽略它的setAdapter(),我已经成功地删除了AlertDialog列表末尾的多余空格。

在使用它调用builder.setView()之前,我创建了一个ListView,并直接在上面设置了适配器和OnListItemClickListener。

我真的不知道为什么它会工作,所以它可能会在其他设备上崩溃-希望不会是灾难性的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17599733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档