Nimblechapps Blog

This is the section where we get a chance to rant about latest happenings in the tech world. Keen to know our thoughts? Refer our blogs

Alert Dialog And Custom Dialog For Android

Custom Alertbox for Android

A Dialog is a small window that prompts the user to a decision or enter additional information.

Some times in our application, if you wanted to ask the user about deciding between yes or no in response to any particular action taken by the user, by remaining in the same activity and without changing the screen, you can use Alert Dialog.

Objectives of this Tutorial

https://youtu.be/7w5K6ed2MLY

1

Creating a simple Alert Dialog using AlertDialog.Builder.

2

Creating a Custom Dialog with Custom Layout.


Warning: preg_match() expects parameter 2 to be string, array given in /home/savecont/public_html/nimblechapps.com/wp-content/plugins/js_composer/include/templates/shortcodes/vc_empty_space.php on line 10

In this example, we will devolve Alert Dialog and Custom Dialog.

How to create Alert Dialog

To create an alert dialog, make an object of AlertDialogBuilder which is an inner class of AlertDialog.

The following syntax is used to create alert dialog:

1. AlertDialog.Builder(Context context)

Create a builder for an alert dialog that uses the default alert dialog theme.

Syntax:

[pastacode lang=”java” manual=”AlertDialog.Builder%20object%20%3D%20new%20AlertDialog.Builder%20(Context%20context)%3B” message=”” highlight=”” provider=”manual”/]

For example:

[pastacode lang=”java” manual=”AlertDialog.Builder%20alertDialogBuilder%20%3D%20new%20AlertDialog.Builder(Mainactivity.this)%3B” message=”” highlight=”” provider=”manual”/]

2. AlertDialog.Builder(Context context, int themeResId)

Create a builder for an alert dialog that uses an explicit theme resource.

Syntax:

[pastacode lang=”java” manual=”AlertDialog.Builder%20object%20%3D%20new%20AlertDialog.Builder%20(Context%20context%2Cint%20themeResId)%3B” message=”” highlight=”” provider=”manual”/]

For example:

[pastacode lang=”java” manual=”AlertDialog.Builder%20alertDialogBuilder%20%3D%20new%20AlertDialog.Builder(Mainactivity.this%2CR.style.dialogTheme)%3B” message=”” highlight=”” provider=”manual”/]

Important method and description of Alert Dialog

1. setIcon(Drawable icon)

This method is used to set the icon of the alert dialog box.

2. setCancelable(boolean cancelable)

This method is used to set the property that the dialog can be canceled or not.

3. setMessage(CharSequence message)

This method sets the message to be displayed in the alert dialog.

4. setTitle(CharSequence title)

This method used to set the title to appear in the dialog.

5. setNegativeButton(CharSequence text, DialogInterface.OnClickListener listener)

This method is used to set a listener to be invoked when the negative button of the dialog is pressed.

6. setPositiveButton(CharSequence text, DialogInterface.OnClickListener listener)

This method is used to set a listener to be invoked when the positive button of the dialog is pressed.

7. show()

This method is used to create an AlertDialog with the arguments supplied to this builder and immediately displays the dialog.

8. setOnDismissListener(DialogInterface.OnDismissListener onDismissListener)

This method is used to set the callback that will be called when the dialog is dismissed for any reason.

For more information visit: https://developer.android.com/reference/android/app/AlertDialog.Builder.html

Example of how to create alert dialog

[pastacode lang=”java” manual=”AlertDialog.Builder%20builder%20%3D%20new%20AlertDialog.Builder(MainActivity.this)%3B%20%2F%2F%20create%20the%20object%20of%20alert%20dialog%0A%20%20%20%20%20%20%20%20builder.setTitle(%E2%80%9CTITLE%22)%3B%20%2F%2F%20set%20the%20title%20of%20alert%20dialog%20using%20setTitle()%20method%20%0A%20%20%20%20%20%20%20%20builder.setMessage(%22THIS%20IS%20ALERT%20DIALOG%20DEMO%E2%80%9D)%3B%20%2F%2Fthe%20msg%20with%20alert%20dialog%20using%20setMessage()%20method%0A%20%20%20%20%20%20%20%20%2F%2F%20now%20set%20the%20postive%20button%20with%20alert%20dialog%20and%20handle%20it%20result%20using%20setPositiveButton()%20method%0A%20%20%20%20%20%20%20%20builder.setPositiveButton(%22Yes%22%2C%20new%20DialogInterface.OnClickListener()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%40Override%0A%20%20%20%20%20%20%20%20%20%20%20%20public%20void%20onClick(DialogInterface%20dialog%2C%20int%20which)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Toast.makeText(MainActivity.this%2C%20%22Ok%20Button%20Clicked%22%2C%20Toast.LENGTH_SHORT).show()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20now%20set%20the%20negative%20button%20with%20alert%20dialog%20and%20handle%20it%20result%20using%20setNegativeButton()%20method%0A%20%20%20%20%20%20%20%20builder.setNegativeButton(%22No%22%2C%20new%20DialogInterface.OnClickListener()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%40Override%0A%20%20%20%20%20%20%20%20%20%20%20%20public%20void%20onClick(DialogInterface%20dialogInterface%2C%20int%20i)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Toast.makeText(MainActivity.this%2C%20%22Cancel%20Button%20Clicked%22%2C%20Toast.LENGTH_SHORT).show()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20builder.show()%3B%2F%2F%20now%20show%20the%20alert%20dialog%20using%20show()%20method” message=”” highlight=”” provider=”manual”/]

How to create a custom dialog with custom layout

To create a custom dialog, make an object of Dialog which an inner class of Dialog

The following syntax is used to create custom dialog

1. Dialog (Context context);

Create an object for a custom dialog that uses the default dialog theme.

Syntax:

[pastacode lang=”java” manual=”Dialog%20object%20%3D%20new%20Dialog%20(Context%20context)%3B” message=”” highlight=”” provider=”manual”/]

For example:

[pastacode lang=”java” manual=”Dialog%20customDialog%20%3D%20new%20Dialog(MainActivity.this)%3B” message=”” highlight=”” provider=”manual”/]

2. Dialog (Context context, int themeResId)

Create an object for a custom dialog that uses an explicit theme resource.

Syntax:

[pastacode lang=”java” manual=”Dialog%20object%20%3D%20new%20Dialog%20(Context%20context%2Cint%20themeResId)%3B” message=”” highlight=”” provider=”manual”/]

For example:

[pastacode lang=”java” manual=”Dialog%20customDialog%20%3D%20new%20Dialog%20(Mainactivity.this%2CR.style.dailogTheme)%3B” message=”” highlight=”” provider=”manual”/]

Example of how to create a custom dialog

[pastacode lang=”java” manual=”final%20Dialog%20customDialog%20%3D%20new%20Dialog(MainActivity.this)%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20the%20setContentView()%20method%20is%20used%20to%20set%20the%20custom%20layout%20for%20the%20dialog%0A%20%20%20%20%20%20%20%20customDialog.setContentView(R.layout.custom_dailog_layout)%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20using%20window%20set%20the%20hight%20and%20width%20of%20custom%20dialog%0A%20%20%20%20%20%20%20%20Window%20window%20%3D%20customDialog.getWindow()%3B%20%20window.setLayout(WindowManager.LayoutParams.MATCH_PARENT%2C%20%20%20%20%20%20WindowManager.LayoutParams.WRAP_CONTENT)%3B%20%20%20%20window.setGravity(Gravity.CENTER)%3B%0A%20%20%20%20%20%20%20%20customDialog.show()%3B%2F%2F%20this%20show()%20method%20is%20used%20to%20show%20custom%20dialog” message=”” highlight=”” provider=”manual”/]

Now let’s see this in action by creating a new project.

1. Create a new project in Android Studio from File > New Project. When it prompts you to select the Empty activity, and proceed

Create a new project2. Create layout like below in activity_main.xml like this

[pastacode lang=”java” manual=”%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0A%3CRelativeLayout%20xmlns%3Aandroid%3D%22http%3A%2F%2Fschemas.android.com%2Fapk%2Fres%2Fandroid%22%0A%20%20%20%20xmlns%3Aapp%3D%22http%3A%2F%2Fschemas.android.com%2Fapk%2Fres-auto%22%0A%20%20%20%20xmlns%3Atools%3D%22http%3A%2F%2Fschemas.android.com%2Ftools%22%0A%20%20%20%20android%3Alayout_width%3D%22match_parent%22%0A%20%20%20%20android%3Alayout_height%3D%22match_parent%22%0A%20%20%20%20android%3Aorientation%3D%22vertical%22%0A%20%20%20%20tools%3Acontext%3D%22com.nimblechapps.custom_dailog.MainActivity%22%3E%0A%20%20%20%3CButton%0A%20%20%20%20%20%20%20%20android%3Aid%3D%22%40%2Bid%2FbtnShowDialog%22%0A%20%20%20%20%20%20%20%20android%3Alayout_width%3D%22match_parent%22%0A%20%20%20%20%20%20%20%20android%3Alayout_height%3D%22wrap_content%22%0A%20%20%20%20%20%20%20%20android%3Abackground%3D%22%2326d60f%22%0A%20%20%20%20%20%20%20%20android%3AtextColor%3D%22%23FFFFFF%22%0A%20%20%20%20%20%20%20%20android%3Alayout_alignParentBottom%3D%22true%22%0A%20%20%20%20%20%20%20%20android%3Atext%3D%22Show%20Custom%20Dialog%22%20%2F%3E%0A%20%20%20%3CButton%0A%20%20%20%20%20%20%20%20android%3Aid%3D%22%40%2Bid%2FbtnAlertDialog%22%0A%20%20%20%20%20%20%20%20android%3Alayout_width%3D%22match_parent%22%0A%20%20%20%20%20%20%20%20android%3Alayout_height%3D%22wrap_content%22%0A%20%20%20%20%20%20%20%20android%3Abackground%3D%22%2326d60f%22%0A%20%20%20%20%20%20%20%20android%3AtextColor%3D%22%23FFFFFF%22%0A%20%20%20%20%20%20%20%20android%3Alayout_marginBottom%3D%2220dp%22%0A%20%20%20%20%20%20%20%20android%3Alayout_above%3D%22%40id%2FbtnShowDialog%22%0A%20%20%20%20%20%20%20%20android%3Atext%3D%22Show%20Alert%20Dialog%22%20%2F%3E%0A%20%20%20%3CLinearLayout%0A%20%20%20%20%20%20%20%20android%3Alayout_width%3D%22match_parent%22%0A%20%20%20%20%20%20%20%20android%3Alayout_height%3D%22wrap_content%22%0A%20%20%20%20%20%20%20%20android%3Aorientation%3D%22horizontal%22%3E%0A%20%20%20%20%20%20%20%3CLinearLayout%0A%20%20%20%20%20%20%20%20%20%20%20%20android%3Alayout_width%3D%22wrap_content%22%0A%20%20%20%20%20%20%20%20%20%20%20%20android%3Alayout_height%3D%22wrap_content%22%0A%20%20%20%20%20%20%20%20%20%20%20%20android%3Aorientation%3D%22vertical%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%3CTextView%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Alayout_width%3D%22wrap_content%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Alayout_height%3D%22wrap_content%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Apadding%3D%2210dp%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Atext%3D%22Name%20%20%3A%22%20%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%3CTextView%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Alayout_width%3D%22wrap_content%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Alayout_height%3D%22wrap_content%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Apadding%3D%2210dp%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Atext%3D%22Number%20%20%3A%22%20%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%3CTextView%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Alayout_width%3D%22wrap_content%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Alayout_height%3D%22wrap_content%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Apadding%3D%2210dp%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Atext%3D%22Gender%20%20%3A%22%20%2F%3E%0A%20%20%20%20%20%20%20%3C%2FLinearLayout%3E%0A%20%20%20%20%20%20%20%3CLinearLayout%0A%20%20%20%20%20%20%20%20%20%20%20%20android%3Alayout_width%3D%22match_parent%22%0A%20%20%20%20%20%20%20%20%20%20%20%20android%3Alayout_height%3D%22wrap_content%22%0A%20%20%20%20%20%20%20%20%20%20%20%20android%3Alayout_weight%3D%221%22%0A%20%20%20%20%20%20%20%20%20%20%20%20android%3Aorientation%3D%22vertical%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%3CTextView%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Aid%3D%22%40%2Bid%2FtvName%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Alayout_width%3D%22match_parent%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Alayout_height%3D%22wrap_content%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Apadding%3D%2210dp%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Atext%3D%22%22%20%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%3CTextView%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Aid%3D%22%40%2Bid%2FtvNumber%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Alayout_width%3D%22match_parent%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Alayout_height%3D%22wrap_content%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Apadding%3D%2210dp%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Atext%3D%22%22%20%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%3CTextView%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Aid%3D%22%40%2Bid%2FtvGender%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Alayout_width%3D%22match_parent%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Alayout_height%3D%22wrap_content%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Apadding%3D%2210dp%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20android%3Atext%3D%22%22%20%2F%3E%0A%20%20%20%20%20%20%20%3C%2FLinearLayout%3E%0A%20%20%20%20%3C%2FLinearLayout%3E%0A%3C%2FRelativeLayout%3E” message=”” highlight=”” provider=”manual”/]

3. Create a layout resource file for custom Dialog

Create a layout resource file

[pastacode lang=”java” manual=”%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0A%3CLinearLayout%20xmlns%3Aandroid%3D%22http%3A%2F%2Fschemas.android.com%2Fapk%2Fres%2Fandroid%22%0A%20%20%20%20android%3Alayout_width%3D%22match_parent%22%0A%20%20%20%20android%3Alayout_height%3D%22match_parent%22%0A%20%20%20%20android%3Aorientation%3D%22vertical%22%3E%0A%20%20%20%3CEditText%0A%20%20%20%20%20%20%20%20android%3Aid%3D%22%40%2Bid%2FedtUname%22%0A%20%20%20%20%20%20%20%20android%3Alayout_width%3D%22match_parent%22%0A%20%20%20%20%20%20%20%20android%3Alayout_height%3D%22wrap_content%22%0A%20%20%20%20%20%20%20%20android%3Alayout_marginLeft%3D%2210dp%22%0A%20%20%20%20%20%20%20%20android%3Alayout_marginRight%3D%2210dp%22%0A%20%20%20%20%20%20%20%20android%3Ahint%3D%22Enter%20User%20Name%22%0A%20%20%20%20%20%20%20%20android%3AimeOptions%3D%22actionNext%22%0A%20%20%20%20%20%20%20%20android%3AinputType%3D%22text%22%20%2F%3E%0A%20%20%20%3CEditText%0A%20%20%20%20%20%20%20%20android%3Aid%3D%22%40%2Bid%2FedtPhome%22%0A%20%20%20%20%20%20%20%20android%3Alayout_width%3D%22match_parent%22%0A%20%20%20%20%20%20%20%20android%3Alayout_height%3D%22wrap_content%22%0A%20%20%20%20%20%20%20%20android%3Alayout_marginLeft%3D%2210dp%22%0A%20%20%20%20%20%20%20%20android%3Alayout_marginRight%3D%2210dp%22%0A%20%20%20%20%20%20%20%20android%3Ahint%3D%22Enter%20User%20Phone%20Number%22%0A%20%20%20%20%20%20%20%20android%3AimeOptions%3D%22actionNext%22%0A%20%20%20%20%20%20%20%20android%3AinputType%3D%22number%22%0A%20%20%20%20%20%20%20%20android%3AmaxLength%3D%2210%22%20%2F%3E%0A%20%20%20%3CTextView%0A%20%20%20%20%20%20%20%20android%3Alayout_width%3D%22match_parent%22%0A%20%20%20%20%20%20%20%20android%3Alayout_height%3D%22wrap_content%22%0A%20%20%20%20%20%20%20%20android%3Alayout_marginLeft%3D%2210dp%22%0A%20%20%20%20%20%20%20%20android%3Alayout_marginRight%3D%2210dp%22%0A%20%20%20%20%20%20%20%20android%3Alayout_marginTop%3D%2210dp%22%0A%20%20%20%20%20%20%20%20android%3Apadding%3D%225dp%22%0A%20%20%20%20%20%20%20%20android%3Atext%3D%22Select%20Geder%22%20%20%20%20%20%0A%20%20%20%20%20%20%20%20android%3AtextColor%3D%22%23000%22%20%2F%3E%0A%20%20%20%3CRadioGroup%0A%20%20%20%20%20%20%20%20android%3Aid%3D%22%40%2Bid%2FgenderRadioGroup%22%0A%20%20%20%20%20%20%20%20android%3Alayout_width%3D%22match_parent%22%0A%20%20%20%20%20%20%20%20android%3Alayout_height%3D%22wrap_content%22%0A%20%20%20%20%20%20%20%20android%3Alayout_marginLeft%3D%2210dp%22%0A%20%20%20%20%20%20%20%20android%3Alayout_marginRight%3D%2210dp%22%0A%20%20%20%20%20%20%20%20android%3Alayout_marginTop%3D%2210dp%22%3E%0A%20%20%20%20%20%20%20%3CRadioButton%0A%20%20%20%20%20%20%20%20%20%20%20%20android%3Aid%3D%22%40%2Bid%2FmaleRadioButton%22%0A%20%20%20%20%20%20%20%20%20%20%20%20android%3Alayout_width%3D%22match_parent%22%0A%20%20%20%20%20%20%20%20%20%20%20%20android%3Alayout_height%3D%22wrap_content%22%0A%20%20%20%20%20%20%20%20%20%20%20%20android%3Atext%3D%22Male%22%20%2F%3E%0A%20%20%20%20%20%20%20%3CRadioButton%0A%20%20%20%20%20%20%20%20%20%20%20%20android%3Aid%3D%22%40%2Bid%2FfemaleRadioButton%22%0A%20%20%20%20%20%20%20%20%20%20%20%20android%3Alayout_width%3D%22match_parent%22%0A%20%20%20%20%20%20%20%20%20%20%20%20android%3Alayout_height%3D%22wrap_content%22%0A%20%20%20%20%20%20%20%20%20%20%20%20android%3Atext%3D%22Female%22%20%2F%3E%0A%20%20%20%3C%2FRadioGroup%3E%0A%20%20%20%3CButton%0A%20%20%20%20%20%20%20%20android%3Aid%3D%22%40%2Bid%2FbtnOk%22%0A%20%20%20%20%20%20%20%20android%3Alayout_width%3D%22match_parent%22%0A%20%20%20%20%20%20%20%20android%3Alayout_height%3D%22wrap_content%22%0A%20%20%20%20%20%20%20%20android%3Alayout_alignParentBottom%3D%22true%22%0A%20%20%20%20%20%20%20%20android%3Alayout_marginTop%3D%2220dp%22%0A%20%20%20%20%20%20%20%20android%3Abackground%3D%22%2326d60f%22%0A%20%20%20%20%20%20%20%20android%3Atext%3D%22OK%22%0A%20%20%20%20%20%20%20%20android%3AtextColor%3D%22%23FFFFFF%22%0A%20%20%20%20%20%20%20%20android%3AtextStyle%3D%22bold%22%20%2F%3E%0A%3C%2FLinearLayout%3E” message=”” highlight=”” provider=”manual”/]

4. Now create an Alert Dialog using Alert.Builder like this

Use setTitle() to set title of Alert Dialog

Use setMessage() to set message to Alert dialog

Use setPositiveButton() to set positive button of the dialog

Use setNegativeButton () to set negative button of the dialog

Use show() method to show Alert Dialog

Create an alert dialog using below code:

[pastacode lang=”java” manual=”AlertDialog.Builder%20builder%20%3D%20new%20AlertDialog.Builder(MainActivity.this)%3B%20%2F%2F%20create%20the%20object%20of%20alert%20dialog%0A%20%20%20%20%20%20%20%20builder.setTitle(%E2%80%9CTITLE%22)%3B%20%2F%2F%20set%20the%20title%20of%20alert%20dialog%20using%20setTitle()%20method%0A%20%20%20%20%20%20%20%20builder.setMessage(%22THIS%20IS%20ALERT%20DIALOG%20DEMO%22)%3B%2F%2Fthe%20msg%20with%20alert%20dialog%20using%20setMessage()%20method%0A%20%20%20%20%20%20%20%20%2F%2F%20now%20set%20the%20postive%20button%20with%20alert%20dialog%20and%20handle%20it%20result%20using%20setPositiveButton()%20method%0A%20%20%20%20%20%20%20%20builder.setPositiveButton(%22Yes%22%2C%20new%20DialogInterface.OnClickListener()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%40Override%0A%20%20%20%20%20%20%20%20%20%20%20%20public%20void%20onClick(DialogInterface%20dialog%2C%20int%20which)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Toast.makeText(MainActivity.this%2C%20%22Ok%20Button%20Clicked%22%2C%20Toast.LENGTH_SHORT).show()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20now%20set%20the%20negative%20button%20with%20alert%20dialog%20and%20handle%20it%20result%20using%20setNegativeButton()%20method%0A%20%20%20%20%20%20%20%20builder.setNegativeButton(%22No%22%2C%20new%20DialogInterface.OnClickListener()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%40Override%0A%20%20%20%20%20%20%20%20%20%20%20%20public%20void%20onClick(DialogInterface%20dialogInterface%2C%20int%20i)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Toast.makeText(MainActivity.this%2C%20%22Cancel%20Button%20Clicked%22%2C%20Toast.LENGTH_SHORT).show()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20builder.show()%3B%20%2F%2F%20now%20show%20the%20alert%20dialog%20using%20show()%20method” message=”” highlight=”” provider=”manual”/]

5. Now create a custom dialog like this

Use setContentView() method to set custom layout to a custom dialog

Now programmatically set height and width of custom dialog using Window like this

Use show() method show custom Dialog

To access the controls of custom dialog bind all controls like this:

[pastacode lang=”java” manual=”EditText)%20edtUname%20%3D%20(EditText)%20customDialog.findViewById(R.id.edtUname)%3B” message=”” highlight=”” provider=”manual”/]

Now create a custom dialog like this

[pastacode lang=”java” manual=”final%20Dialog%20customDialog%20%3D%20new%20Dialog(MainActivity.this)%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20the%20setContentView()%20method%20is%20used%20to%20set%20the%20custom%20layout%20for%20the%20dialog%0A%20%20%20%20%20%20%20%20customDialog.setContentView(R.layout.custom_dailog_layout)%3B%0A%20%20%20%20%20%20%20final%20EditText%20edtUname%2C%20edtPhome%3B%0A%20%20%20%20%20%20%20%20final%20RadioGroup%20genderRadioGroup%3B%0A%20%20%20%20%20%20%20%20final%20RadioButton%20maleRadioButton%2C%20femaleRadioButton%3B%0A%20%20%20%20%20%20%20%20final%20Button%20btnOk%3B%0A%20%20%20%20%20%20%20gender%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%2F%2F%20using%20window%20set%20the%20hight%20and%20width%20of%20custom%20dialog%0A%20%20%20%20%20%20%20%20Window%20window%20%3D%20customDialog.getWindow()%3B%0A%20%20%20%20%20%20%20%20window.setLayout(WindowManager.LayoutParams.MATCH_PARENT%2C%20%0AWindowManager.LayoutParams.WRAP_CONTENT)%3B%0A%20%20%20%20%20%20%20%20window.setGravity(Gravity.CENTER)%3B%0A%20%20%20%20%20%20%20%2F%2F%20bind%20all%20controlss%20with%20custom%20dialog%20%0A%20%20%20%20%20%20%20%20btnOk%20%3D%20(Button)%20customDialog.findViewById(R.id.btnOk)%3B%0A%20%20%20%20%20%20%20%20genderRadioGroup%20%3D%20(RadioGroup)%20customDialog.findViewById(R.id.genderRadioGroup)%3B%0A%20%20%20%20%20%20%20%20maleRadioButton%20%3D%20(RadioButton)%20customDialog.findViewById(R.id.maleRadioButton)%3B%0A%20%20%20%20%20%20%20%20femaleRadioButton%20%3D%20(RadioButton)%20customDialog.findViewById(R.id.femaleRadioButton)%3B%0A%20%20%20%20%20%20%20%20edtUname%20%3D%20(EditText)%20customDialog.findViewById(R.id.edtUname)%3B%0A%20%20%20%20%20%20%20%20edtPhome%20%3D%20(EditText)%20customDialog.findViewById(R.id.edtPhome)%3B%0A%20%20%20%20%20%20%20genderRadioGroup.setOnCheckedChangeListener(new%20RadioGroup.OnCheckedChangeListener()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%40Override%0A%20%20%20%20%20%20%20%20%20%20%20%20public%20void%20onCheckedChanged(RadioGroup%20radioGroup%2C%20%40IdRes%20int%20checkedId)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(checkedId%20%3D%3D%20R.id.maleRadioButton)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gender%20%3D%20%22Male%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20if%20(checkedId%20%3D%3D%20R.id.femaleRadioButton)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gender%20%3D%20%22Female%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20btnOk.setOnClickListener(new%20View.OnClickListener()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%40Override%0A%20%20%20%20%20%20%20%20%20%20%20%20public%20void%20onClick(View%20view)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(edtPhome.getText().toString().trim().isEmpty())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20edtPhome.setError(%22Please%20Enter%20Phone%20Number%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20edtPhome.requestFocus()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(edtPhome.getText().toString().trim().length()%20%3C%2010)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20edtPhome.setError(%22Please%20Enter%20Valid%20Phone%20Number%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20edtPhome.requestFocus()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(edtUname.getText().toString().trim().isEmpty())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20edtUname.setError(%22Please%20Entere%20User%20Name%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20edtUname.requestFocus()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(gender.isEmpty())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Toast.makeText(MainActivity.this%2C%20%22Please%20Select%20Gender%22%2C%20Toast.LENGTH_SHORT).show()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(!edtPhome.getText().toString().isEmpty()%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20!edtPhome.getText().toString().isEmpty()%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20edtPhome.getText().toString().trim().length()%20%3D%3D%2010%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20!edtUname.getText().toString().isEmpty()%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20!gender.isEmpty())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tvName.setText(edtUname.getText().toString())%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tvNumber.setText(edtPhome.getText().toString())%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tvGender.setText(gender)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20customDialog.dismiss()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20customDialog.show()%3B%2F%2F%20this%20show()%20method%20is%20used%20to%20show%20custom%20dialog” message=”” highlight=”” provider=”manual”/]

Full code of main activity

[pastacode lang=”java” manual=”package%20com.nimblechapps.custom_dailog%3B%0Aimport%20android.app.Dialog%3B%0Aimport%20android.content.DialogInterface%3B%0Aimport%20android.support.annotation.IdRes%3B%0Aimport%20android.support.annotation.StringDef%3B%0Aimport%20android.support.v7.app.AlertDialog%3B%0Aimport%20android.support.v7.app.AppCompatActivity%3B%0Aimport%20android.os.Bundle%3B%0Aimport%20android.view.Gravity%3B%0Aimport%20android.view.View%3B%0Aimport%20android.view.Window%3B%0Aimport%20android.view.WindowManager%3B%0Aimport%20android.widget.Button%3B%0Aimport%20android.widget.EditText%3B%0Aimport%20android.widget.RadioButton%3B%0Aimport%20android.widget.RadioGroup%3B%0Aimport%20android.widget.TextView%3B%0Aimport%20android.widget.Toast%3B%0A%0Apublic%20class%20MainActivity%20extends%20AppCompatActivity%20%7B%0A%20%20%20Button%20btnShowDialog%2C%20btnAlertDialog%3B%0A%20%20%20%20TextView%20tvName%2C%20tvNumber%2C%20tvGender%3B%0A%20%20%20%20public%20String%20gender%20%3D%20%22%22%3B%0A%0A%20%20%20%20%40Override%0A%20%20%20%20protected%20void%20onCreate(Bundle%20savedInstanceState)%20%7B%0A%20%20%20%20%20%20%20%20super.onCreate(savedInstanceState)%3B%0A%20%20%20%20%20%20%20%20setContentView(R.layout.activity_main)%3B%0A%20%20%20%20%20%20%20tvGender%20%3D%20(TextView)%20findViewById(R.id.tvGender)%3B%0A%20%20%20%20%20%20%20%20tvNumber%20%3D%20(TextView)%20findViewById(R.id.tvNumber)%3B%0A%20%20%20%20%20%20%20%20tvName%20%3D%20(TextView)%20findViewById(R.id.tvName)%3B%0A%20%20%20%20%20%20btnShowDialog%20%3D%20(Button)%20findViewById(R.id.btnShowDialog)%3B%0A%20%20%20%20%20%20%20%20btnAlertDialog%20%3D%20(Button)%20findViewById(R.id.btnAlertDialog)%3B%0A%20%20%20%20%20%20%20btnShowDialog.setOnClickListener(new%20View.OnClickListener()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%40Override%0A%20%20%20%20%20%20%20%20%20%20%20%20public%20void%20onClick(View%20view)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20showCustomDialog()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20btnAlertDialog.setOnClickListener(new%20View.OnClickListener()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%40Override%0A%20%20%20%20%20%20%20%20%20%20%20%20public%20void%20onClick(View%20view)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20showAlertDialog()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%7D%0A%20%20%20private%20void%20showAlertDialog()%20%7B%0A%20%20%20%20%20%20%20%20AlertDialog.Builder%20builder%20%3D%20new%20AlertDialog.Builder(MainActivity.this)%3B%2F%2F%20create%20the%20object%20of%20alert%20dailog%0A%20%20%20%20%20%20%20%20builder.setTitle(%22TITLE%22)%3B%2F%2F%20set%20the%20title%20of%20alert%20dialog%20using%20setTitle()%20method%0A%20%20%20%20%20%20%20%20builder.setMessage(%22THIS%20IS%20ALERT%20DIALOG%20DEMO%22)%3B%2F%2Fthe%20the%20msg%20with%20alert%20dialog%20using%20setMessage()%20method%0A%20%20%20%20%20%20%20%20%2F%2F%20now%20set%20the%20postive%20button%20with%20alert%20dialog%20and%20handle%20it%20result%20using%20setPositiveButton()%20method%0A%20%20%20%20%20%20%20%20builder.setPositiveButton(%22Yes%22%2C%20new%20DialogInterface.OnClickListener()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%40Override%0A%20%20%20%20%20%20%20%20%20%20%20%20public%20void%20onClick(DialogInterface%20dialog%2C%20int%20which)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Toast.makeText(MainActivity.this%2C%20%22Ok%20Button%20Clicked%22%2C%20Toast.LENGTH_SHORT).show()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20now%20set%20the%20negative%20button%20with%20alert%20dialog%20and%20handle%20it%20result%20using%20setNegativeButton()%20method%0A%20%20%20%20%20%20%20%20builder.setNegativeButton(%22No%22%2C%20new%20DialogInterface.OnClickListener()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%40Override%0A%20%20%20%20%20%20%20%20%20%20%20%20public%20void%20onClick(DialogInterface%20dialogInterface%2C%20int%20i)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Toast.makeText(MainActivity.this%2C%20%22Cancle%20Button%20Clicked%22%2C%20Toast.LENGTH_SHORT).show()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20builder.show()%3B%2F%2F%20now%20show%20the%20alert%20dialog%20using%20show()%20method%0A%20%20%20%20%7D%0A%20%20%20%20private%20void%20showCustomDialog()%20%7B%0A%20%20%20%20%20%20%20final%20Dialog%20customDialog%20%3D%20new%20Dialog(MainActivity.this)%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20the%20setContentView()%20method%20is%20used%20to%20set%20the%20custom%20layout%20for%20the%20dialog%0A%20%20%20%20%20%20%20%20customDialog.setContentView(R.layout.custom_dailog_layout)%3B%0A%20%20%20%20%20%20%20final%20EditText%20edtUname%2C%20edtPhome%3B%0A%20%20%20%20%20%20%20%20final%20RadioGroup%20genderRadioGroup%3B%0A%20%20%20%20%20%20%20%20final%20RadioButton%20maleRadioButton%2C%20femaleRadioButton%3B%0A%20%20%20%20%20%20%20%20final%20Button%20btnOk%3B%0A%20%20%20%20%20%20%20gender%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%2F%2F%20using%20window%20set%20the%20hight%20and%20width%20of%20custom%20dialog%0A%20%20%20%20%20%20%20%20Window%20window%20%3D%20customDialog.getWindow()%3B%0A%20%20%20%20%20%20%20%20window.setLayout(WindowManager.LayoutParams.MATCH_PARENT%2C%20%0AWindowManager.LayoutParams.WRAP_CONTENT)%3B%0A%20%20%20%20%20%20%20%20window.setGravity(Gravity.CENTER)%3B%0A%20%20%20%20%20%20%20%2F%2F%20bind%20all%20controlss%20with%20custom%20dialog%0A%20%20%20%20%20%20%20%20btnOk%20%3D%20(Button)%20customDialog.findViewById(R.id.btnOk)%3B%0A%20%20%20%20%20%20%20%20genderRadioGroup%20%3D%20(RadioGroup)%20customDialog.findViewById(R.id.genderRadioGroup)%3B%0A%20%20%20%20%20%20%20%20maleRadioButton%20%3D%20(RadioButton)%20customDialog.findViewById(R.id.maleRadioButton)%3B%0A%20%20%20%20%20%20%20%20femaleRadioButton%20%3D%20(RadioButton)%20customDialog.findViewById(R.id.femaleRadioButton)%3B%0A%20%20%20%20%20%20%20%20edtUname%20%3D%20(EditText)%20customDialog.findViewById(R.id.edtUname)%3B%0A%20%20%20%20%20%20%20%20edtPhome%20%3D%20(EditText)%20customDialog.findViewById(R.id.edtPhome)%3B%0A%20%20%20%20%20%20%20genderRadioGroup.setOnCheckedChangeListener(new%20RadioGroup.OnCheckedChangeListener()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%40Override%0A%20%20%20%20%20%20%20%20%20%20%20%20public%20void%20onCheckedChanged(RadioGroup%20radioGroup%2C%20%40IdRes%20int%20checkedId)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(checkedId%20%3D%3D%20R.id.maleRadioButton)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gender%20%3D%20%22Male%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20if%20(checkedId%20%3D%3D%20R.id.femaleRadioButton)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gender%20%3D%20%22Female%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20btnOk.setOnClickListener(new%20View.OnClickListener()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%40Override%0A%20%20%20%20%20%20%20%20%20%20%20%20public%20void%20onClick(View%20view)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(edtPhome.getText().toString().trim().isEmpty())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20edtPhome.setError(%22Please%20Enter%20Phone%20Number%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20edtPhome.requestFocus()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(edtPhome.getText().toString().trim().length()%20%3C%2010)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20edtPhome.setError(%22Please%20Enter%20Valid%20Phone%20Number%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20edtPhome.requestFocus()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(edtUname.getText().toString().trim().isEmpty())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20edtUname.setError(%22Please%20Entere%20User%20Name%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20edtUname.requestFocus()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(gender.isEmpty())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Toast.makeText(MainActivity.this%2C%20%22Please%20Select%20Gender%22%2C%20Toast.LENGTH_SHORT).show()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(!edtPhome.getText().toString().isEmpty()%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20!edtPhome.getText().toString().isEmpty()%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20edtPhome.getText().toString().trim().length()%20%3D%3D%2010%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20!edtUname.getText().toString().isEmpty()%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20!gender.isEmpty())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tvName.setText(edtUname.getText().toString())%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tvNumber.setText(edtPhome.getText().toString())%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tvGender.setText(gender)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20customDialog.dismiss()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20customDialog.show()%3B%2F%2F%20this%20show()%20method%20is%20used%20to%20show%20custom%20dialog%0A%20%20%20%20%7D%0A%7D” message=”” highlight=”” provider=”manual”/]

Conclusion

By using this tutorial now, you can create Alert Dialog and Custom Dialog. You can use modify as per your requirement dialog.