问题在于,只要将单个项目数组传递给DialogFragment,就会在取消按钮上方绘制一条额外的行(可能是一个分隔符)。
当数组中有多个项目时,对话框会正确显示。
如何摆脱单项警报对话框中的额外行?
我正在使用DialogFragment创建一个带有数组资源的AlertDialog
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
int itemsId = 0;
Bundle args = getArguments();
if (args != null) {
itemsId = args.getInt(BUNDLE_ITEMS_ARRAY_ID_KEY, itemsId);
}
if (itemsId > 0) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
.setItems(itemsId, this).setCancelable(true)
.setNegativeButton(android.R.string.cancel, null);
return builder.create();
}
return null;
}
我也在自定义警告对话框样式
<style name="AppTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar">
<item name="android:dialogTheme">@style/MyAlertDialog</item>
<item name="android:alertDialogTheme">@style/MyAlertDialog</item>
</style>
<style name="MyAlertDialog" parent="@android:style/Theme.Holo.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
</style>
答案 0 :(得分:0)
解决方法是检查单个列表项条件,然后将ListView分隔符的高度设置为0.
AlertDialog alertDialog = builder.create();
if (getActivity().getResources().getStringArray(itemsId).length == 1)
alertDialog.getListView().setDividerHeight(0);
return alertDialog;