Reputation: 627
How can I design a custom alert dialog with rounded corners and a transparent dismiss button?
Upvotes: 5
Views: 18724
Reputation: 994
Create your dialog like this:
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
context, R.style.CustomAlertDialog);
AlertDialog alertDialog = alertDialogBuilder.create();
In your styles.xml file:
<style name="CustomAlertDialog" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="android:windowBackground">@drawable/popup_background</item>
</style>
In file popup_background.xml, write whatever corner radius you want:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF" />
<corners android:radius="6dp" />
</shape>
You can change the corner radius.
Upvotes: 34
Reputation: 363737
You can use the Material components for Android library and the androidx.appcompat.app.AlertDialog
.
Just use something like:
new MaterialAlertDialogBuilder(context)
.setTitle("Dialog")
.setMessage("Lorem ipsum dolor ....")
.setPositiveButton("Ok", /* listener = */ null)
.setNegativeButton("Cancel", /* listener = */ null)
.show();
Using a Material Components Theme you can customize the shape of your component with the shapeAppearanceOverlay
attribute in your style.
Something like:
<!-- Alert Dialog -->
<style name="MyThemeOverlayAlertDialog" parent="@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog">
<item name="shapeAppearanceOverlay">@style/ShapeAppearanceOverlay.MyApp.Dialog.Rounded</item>
</style>
Here you can define the rounded corners:
<style name="ShapeAppearanceOverlay.MyApp.Dialog.Rounded" parent="">
<item name="cornerFamily">rounded</item>
<item name="cornerSize">8dp</item>
</style>
Upvotes: 16
Reputation: 612
Try this. It worked for me like a charm.
I am working on sdkversion 28 with a minimum SDK version 19.
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
Upvotes: 1
Reputation: 942
You can create your customview by extending the alert dialog class.
But I would recommend a PopupWindow or a subview that you show with an animation when a specific action performed.
Or you can make an activity with a transparent background by adding this attribute to your Manifest.xml file:
android:theme="@android:style/Theme.Translucent"
Upvotes: 0
Reputation: 105
Try it...
final Dialog dialog = new Dialog(context);
// Include the dialog.xml file
dialog.setContentView(R.layout.your_custom_layout);
// Set the dialog title
//dialog.setTitle("Custom Dialog");
// Set values for custom dialog components -
// text, image and button
final EditText name = (EditText) dialog.findViewById(R.id.name_edit);
dialog.show();
/
Button editButton = (Button) dialog.findViewById(R.id.editbtn);
// If the decline button is clicked, close the custom dialog
editButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Close dialog
dialog.dismiss();
}
});
final Button cancenbtn = (Button) dialog.findViewById(R.id.cancelbtn);
// If the decline button is clicked, close the custom dialog
cancelnbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Close dialog
dialog.dismiss();
}
});
Upvotes: -2