1. 程式人生 > >去除自定義alertdialog(dialog)黑邊

去除自定義alertdialog(dialog)黑邊

在主窗體中顯示自定義的dialog。方法一和方法二的共同程式碼:

private static AlertDialog mAlertDialog;
AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(context, R.style.theme_dialog));
View dialogView = getView(context, R.layout.dialog_view);

方式一:

builder.setView(dialogView);
mAlertDialog = builder.create();
mAlertDialog.show();
效果如下:

可以看到上下有明顯的黑邊。

方式二:

mAlertDialog = builder.create();
mAlertDialog.setView(dialogView, 0, 0, 0, 0);
mAlertDialog.show();
效果如下:

通過設定

mAlertDialog.setView(dialogView, 0, 0, 0, 0);

可以看到上下明顯的黑邊不在了,但是四周仍然有個黑框,依然影響整體美觀。

方式三:

通過樣式檔案把背景設定為透明:

java程式碼如下:

private static AlertDialog mAlertDialog;
//使用樣式檔案把背景設定為透明
AlertDialog.Builder builder = new AlertDialog.Builder(
				new ContextThemeWrapper(context, R.style.Theme_Transparent));
View dialogView = getView(context, R.layout.dialog_view);
// 為dialog設定view
builder.setView(dialogView);
mAlertDialog = builder.create();
mAlertDialog.show();
樣式檔案res/values/styles.xml程式碼如下:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme_Transparent" parent="@android:Theme.DeviceDefault.Light.Dialog">
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowNoTitle">true</item>
    </style>
</resources>
效果如下:

方式四:

把彈出窗體由alertdialog改成dialog。

View dialogView = getView(context, R.layout.dialog_view);
Dialog mAlertDialog = new Dialog(context, R.style.theme_dialog);
mAlertDialog.setContentView(dialogView);
mAlertDialog.show();
樣式style檔案為:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="theme_dialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowIsTranslucent">false</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:background">@android:color/black</item>
        <item name="android:windowBackground">@null</item>
        <item name="android:backgroundDimEnabled">false</item>
    </style>
</resources>
最終效果如下:


使用dialog解決了黑邊問題,但是dialog的佈局我們並不是很滿意,下一篇我將介紹設定自定義窗體的大小和位置。