【问题标题】:alertdialog problems with item divider项目分隔符的 alertdialog 问题
【发布时间】:2019-04-14 17:13:41
【问题描述】:

我遇到了警报对话框的问题。当我创建一个警报对话框时,默认行为是不带分隔符显示。我想得到与下图完全相同的东西

我的代码显示了一些不同的东西,比如我不想要的最后一个列表项底部的额外行。

 AlertDialog.Builder builder = new AlertDialog.Builder(context);
        AlertDialog alertDialogObject = builder.create();
        builder.setItems(valueList, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int item) {
                editField.setText(valueList[item]);
                editField.setError(null);
                editField.requestFocus();
            }
        });
        alertDialogObject = builder.create();
        ListView listView=alertDialogObject.getListView();
        listView.setDivider(new ColorDrawable(Color.LTGRAY)); // set color
        listView.setDividerHeight(2); // set height
        alertDialogObject.show(); 

有人可以帮忙吗?我想像上面第一张图片一样获得对话框警报?

【问题讨论】:

    标签: android android-alertdialog


    【解决方案1】:

    它看起来像ListView 中的页脚装饰,所以尝试禁用页脚分隔符,然后添加一个空页脚,它应该从底部删除该行:

    listView.setFooterDividersEnabled(false);
    listView.addFooterView(new View(context));
    

    【讨论】:

    • 嗨亚伦,我试过这个但没有用。感谢您的意见
    • 这么想,感觉它在不同的 API 级别上有不同的警报对话框布局,或者您可以尝试设置自己的自定义视图,看看它是否摆脱了底线。
    • @yoohoo 我已经更新了我的答案,之后只需添加一个空的View,它应该可以解决问题。
    • 嗨亚伦,添加空视图作品。谢谢。如上图所示,标题下方的分隔线怎么样?我该怎么做?
    • 哦,你是说蓝线?它与标题有关,而不是列表视图,您可以尝试 setTitle(null) 但我不确定它是否有效或适合您的实现。
    【解决方案2】:

    这是一个带分隔符的示例

    //create dialog
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setTitle(title);
        builder.setItems(valueList, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int item) {
                //do something
            }
        });
        AlertDialog alert =builder.create();
        //set dividers
        ListView listView =alert.getListView();
        listView.setDivider(context.getResources().getDrawable(R.drawable.extraDull));
        listView.setDividerHeight(1);
        //show
        alert.show();
    

    注意这段代码与你所拥有的不同... 看看 builder.create() 附近

    您也可以将其添加到您的颜色文件夹中

    <drawable name="extraDull">#808080</drawable>
    

    【讨论】:

    • 嗨 seekStillness,感谢您的帮助,但不幸的是,我得到的对话框与我在第二张图片中发布的对话框相似。标题下没有一行,列表中的最后一项有一个分隔线。我正在寻找类似第一张图片的内容,其中标题下方有分隔符,最后一项下方没有分隔符
    • 好的,我明白了,我误解了你的问题。
    猜你喜欢
    • 2018-04-24
    • 1970-01-01
    • 2011-04-15
    相关资源
    最近更新 更多