我有这堂课:
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
答案 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上,所以我建议您在对话框中使用自定义视图。