Tất cả các câu trả lời khác ở đây có ý nghĩa, nhưng nó không đáp ứng những gì Fabian cần. Đây là một giải pháp của tôi. Nó có thể không phải là giải pháp hoàn hảo nhưng nó hiệu quả với tôi. Nó hiển thị một hộp thoại trên toàn màn hình nhưng bạn có thể chỉ định một phần đệm ở trên, dưới, trái hoặc phải.
Đầu tiên hãy đặt cái này vào res / value / style.xml của bạn:
<style name="CustomDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@color/Black0Percent</item>
<item name="android:paddingTop">20dp</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:windowIsFloating">false</item>
</style>
Như bạn có thể thấy tôi có android: paddingTop = 20dp về cơ bản là những gì bạn cần. Các android: windowBackground = @ màu / Black0Percent chỉ là một mã màu tuyên bố trên color.xml của tôi
res / value / color.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="Black0Percent">#00000000</color>
</resources>
Mã màu đó chỉ đóng vai trò là hình nộm để thay thế nền cửa sổ mặc định của Hộp thoại bằng màu trong suốt 0%.
Tiếp theo xây dựng bố cục hộp thoại tùy chỉnh res / layout / hộp thoại
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialoglayout"
android:layout_width="match_parent"
android:background="@drawable/DesiredImageBackground"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/edittext1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:textSize="18dp" />
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Dummy Button"
android:textSize="18dp" />
</LinearLayout>
Cuối cùng, đây là hộp thoại của chúng tôi đặt chế độ xem tùy chỉnh sử dụng hộp thoại của chúng tôi:
Dialog customDialog;
LayoutInflater inflater = (LayoutInflater) getLayoutInflater();
View customView = inflater.inflate(R.layout.dialog, null);
// Build the dialog
customDialog = new Dialog(this, R.style.CustomDialog);
customDialog.setContentView(customView);
customDialog.show();
Kết luận: Tôi đã cố gắng ghi đè chủ đề của hộp thoại trong tệp kiểu tệp có tên CustomDialog. Nó ghi đè lên bố cục cửa sổ Hộp thoại và cho tôi cơ hội đặt phần đệm và thay đổi độ mờ của nền. Nó có thể không phải là giải pháp hoàn hảo nhưng tôi hy vọng nó sẽ giúp bạn .. :)