AlertDialog默认按钮分隔符删除

时间:2014-04-03 01:09:40

标签: android android-alertdialog android-dialogfragment

问题在于,只要将单个项目数组传递给DialogFragment,就会在取消按钮上方绘制一条额外的行(可能是一个分隔符)。

Single Item AlertDialog

当数组中有多个项目时,对话框会正确显示。

Multi-item AlertDialog

如何摆脱单项警报对话框中的额外行?

我正在使用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>

1 个答案:

答案 0 :(得分:0)

解决方法是检查单个列表项条件,然后将ListView分隔符的高度设置为0.

AlertDialog alertDialog = builder.create();
if (getActivity().getResources().getStringArray(itemsId).length == 1)
    alertDialog.getListView().setDividerHeight(0);
return alertDialog;