/FullScreenDialog

A DialogFragment that implements the Full-screen dialog pattern defined in the Material Design guidelines.

Primary LanguageJavaApache License 2.0Apache-2.0

FullScreenDialog

A DialogFragment that implements the Full-screen dialog pattern defined in the Material Design guidelines.

FullScreenDialog Sample GIF

Download

Step 1. Add the JitPack repository in your root build.gradle at the end of repositories:

allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

Step 2. Add the dependency

dependencies {
        implementation 'com.github.franmontiel:FullScreenDialog:1.0.1'
}

Usage

Just create a new FullScreenDialogFragment using the Builder

new FullScreenDialogFragment.Builder(MainActivity.this)
                        .setTitle(R.string.dialog_title)
                        .setConfirmButton(R.string.dialog_positive_button)
                        .setOnConfirmListener(onConfirmListener)
                        .setOnDiscardListener(onDiscardListener)
                        .setContent(ContentFragment.class, argumentsBundle)
                        .build();

The content

The content of the dialog must be a Fragment that implements the FullScreenDialogContent interface.

The content will be wrapped by the FullScreenDialogFragment. This allows to use as a dialog any Fragment without the need of making it inherit from DialogFragment.

Through the FullScreenDialogContent interface the content Fragment is able to receive events and control the dialog.

Styling the dialog

It is possible to show the dialog in a default dialog window calling setFullScreen(false) on the Builder.

To style the dialog Toolbar a style called FullScreenDialogToolbar must be created.

<style name="FullScreenDialogToolbar">
    <item name="android:background">@color/colorPrimaryDark</item>
    <item name="android:theme">@style/ThemeOverlay.AppCompat.Dark</item>
</style>

Listening to events

To be notified when the dialog is closed due to a confirmation or a dismiss action it is possible set a OnConfirmListener and a OnDiscardListener.

FullScreenDialogContent interface allows the content Fragment to receive the dialog click events through the onConfirmClick and onDiscardClick methods.

Back key press handling

To notify the back key press to the dialog, what will fire the discard button click event notification to the content, the onBackPressed method of FullScreenDialogFragment must be invoked from the Activity method of the same name. This is only needed if the dialog is in fullscreen due to the Fragments lack of ability to detect back key press.

@Override
public void onBackPressed() {
    if (dialogFragment != null && dialogFragment.isAdded()) {
        dialogFragment.onBackPressed();
    } else {
        super.onBackPressed();
    }
}

License

Copyright (C) 2017 Francisco José Montiel Navarro

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.