Android 21 April 2019
Post header popup dialog

Android: Custom Alert Popup Dialog - From the scratch + source code

Hi guys, here you have a tutorial to create custom pop up dialog.

YouTube tutorial, code snippets and GitHub source code. Enjoy!

Code Display

public class MainActivity extends AppCompatActivity {


    private CardView cv1;
    private ActionDialog dialog;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViews();
        setListeners();
    }

    private void findViews() {
        cv1 = findViewById(R.id.cv_feature1);
    }

    private void setListeners() {
        cv1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog = new ActionDialog(R.string.title_no_location_dialog,
                        R.string.subtitle_no_location_dialog, R.string.understood_label, MainActivity.this);
                dialog.showDialog();
            }
        });
    }
}

                    
public class ActionDialog {

    private TextView tvTitle;
    private TextView tvSubtitle;
    private TextView tvAction;


    private Activity activity;
    private Dialog dialog;


    public ActionDialog(@StringRes int title, @StringRes int subtitle, @StringRes int action, Activity activity) {
        this.activity = activity;

        setDialog();
        findViews();
        setData(title, subtitle, action);
    }




    public void showDialog(){
        dialog.show();
    }

    public void dismiss(){
        dialog.dismiss();
    }



    private void setDialog() {
        dialog = new Dialog(activity);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setContentView(R.layout.custom_dialog);
    }

    private void findViews(){
        tvTitle = dialog.findViewById(R.id.tv_title);
        tvSubtitle = dialog.findViewById(R.id.tv_subtitle);
        tvAction = dialog.findViewById(R.id.tv_action);
    }

    private void setData(int title, int subtitle, int action) {
        tvTitle.setText(title);
        tvSubtitle.setText(subtitle);
        tvAction.setText(action);
    }


}

                    
custom_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"

    android:layout_margin="20dp">

    <TextView
        android:id="@+id/tv_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:layout_gravity="center"
        android:layout_marginBottom="16dp"
        android:gravity="center"

        android:textSize="18sp"
        tools:text="Title custom dialog"
        android:textAllCaps="true"
        android:textColor="@color/title"
        />


    <TextView
        android:id="@+id/tv_subtitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:layout_gravity="center"
        android:layout_marginBottom="36dp"
        android:gravity="center"

        android:textSize="18sp"
        android:textColor="@color/subtitle_dark"
        tools:text="Subtitle custom dialog"
        />

    <TextView
        android:id="@+id/tv_action"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/button_action"

        android:layout_gravity="center"

        android:paddingStart="36dp"
        android:paddingEnd="36dp"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"

        android:textSize="18sp"
        android:textColor="@color/white"
        tools:text="Action"
        android:textAllCaps="true"
        />

</LinearLayout>
                    
Author photo

About the author

I just turn ideas into apps.