AlertDialog不会在列表中显示分隔符

时间:2015-11-03 13:47:55

标签: android android-alertdialog

我有这堂课:

public class PageDetailInfoView extends FrameLayout {

//few constructors and methods

//method to show an AlertDialog with a list
private void openDialog(){

    List<String> mTags = new ArrayList<String>();
    mTags.add("Item1");
    mTags.add("Item2");
    mTags.add("Item3");
    mTags.add("Item4");
    mTags.add("Item5");
    mTags.add("Item6");

    final CharSequence[] tags = mTags.toArray(new String[mTags.size()]);
    AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
    builder.setTitle("Title");
    builder.setItems(tags, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int item) {
        //do something
        }
    });

    Dialog alertDialogObject = builder.create();
    alertDialogObject.show();


}

在调用openDialog()之后打开Alert对话框,但问题是它没有展示项之间的分隔符。 我想得到这个:
http://2.bp.blogspot.com/-i00d8VG6WsQ/UrGIeyb-8II/AAAAAAAAHwA/8MPWP5qrQ78/s500/alertdialog-with-simple-listview.png

事实上,我得到了它,但没有灰色分隔符  有什么想法吗?

enter image description here

2 个答案:

答案 0 :(得分:34)

AlertDialog列出项目分隔符颜色更改为:

AlertDialog alertDialogObject = dialogBuilder.create();
ListView listView=alertDialogObject.getListView();  
listView.setDivider(new ColorDrawable(Color.BLUE)); // set color
listView.setDividerHeight(2); // set height 
alertDialogObject.show();

答案 1 :(得分:1)

这可能是因为您在Android 5.0+上运行了具有Material设计的应用程序。

要获得“旧”外观,只需使用Holo样式构建对话框:

ContextThemeWrapper themedContext = new ContextThemeWrapper(getContext(), android.R.style.Theme_Holo_Light_Dialog_NoActionBar);
AlertDialog.Builder builder = new AlertDialog.Builder(themedContext);
// ... then create your dialog

虽然对于某些用户来说这可能看起来很奇怪(特别是在Lollipop和Marshmallow上,所以我建议您在对话框中使用自定义视图。