MaterialDialogを使ったダイアログパターン集

##MaterialDialog
 
https://github.com/afollestad/material-dialogs#basic-dialog

## インストール

```py3:build.gradle(Module：app)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "24.0.0"
    defaultConfig {
        applicationId "jp.co.test.myapplication"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

    //追加
    compile 'com.afollestad.material-dialogs:core:0.9.1.0'
    
    compile 'com.android.support:appcompat-v7:25.0.1'
    testCompile 'junit:junit:4.12'
}

```

## ベーシックなダイアログ

![Screenshot_20161207-115420_png.png](https://qiita-image-store.s3.amazonaws.com/0/99731/04a12605-bfac-bc2a-2e67-b752cb18d98a.png)


```java:

  new MaterialDialog.Builder(this)
                .title("タイトル")
                .content("内容")
                .positiveText("同意")
                .onPositive(new MaterialDialog.SingleButtonCallback() {
                    @Override
                    public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                        Toast.makeText(MainActivity.this, "同意しましたね？", Toast.LENGTH_SHORT).show();
                    }
                })
                .negativeText("キャンセル")
                .show();

```

## テーマを変える

![Screenshot_20161207-130136_png.png](https://qiita-image-store.s3.amazonaws.com/0/99731/8d4b18c6-7f86-105a-29e3-d11e6e56f327.png)

```java

 new MaterialDialog.Builder(this)
                .title("タイトル")
                .content("内容")
                .theme(Theme.DARK)
                .positiveText("同意")
                .onPositive(new MaterialDialog.SingleButtonCallback() {
                    @Override
                    public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                        Toast.makeText(MainActivity.this, "同意しましたね？", Toast.LENGTH_SHORT).show();
                    }
                })
                .negativeText("キャンセル")
                .show();

```


## よくあるチェックボックスがついたダイアログ

![Screenshot_20161207-121358_png.png](https://qiita-image-store.s3.amazonaws.com/0/99731/f05a337a-04ba-c24e-0bff-cfa5afccdea0.png)

```java


  new MaterialDialog.Builder(this)
                .iconRes(R.mipmap.ic_launcher)
                .limitIconToDefaultSize()
                .title("タイトル")
                .positiveText("はい")
                .negativeText("いいえ")
                .onAny(new MaterialDialog.SingleButtonCallback() {
                    @Override
                    public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                        if (which == DialogAction.POSITIVE) {
                            boolean checked = dialog.isPromptCheckBoxChecked();
                            Toast.makeText(MainActivity.this,
                                    "はいが押された、チェックボックスの状態は、" + checked + "です", Toast.LENGTH_SHORT).show();
                        }
                    }
                })
                .checkBoxPrompt("２度と表示させない", false, new CompoundButton.OnCheckedChangeListener() {
                    @Override
                    public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                        Toast.makeText(MainActivity.this, b + "です", Toast.LENGTH_SHORT).show();
                    }
                })
                .show();

```

## リスト

![Screenshot_20161207-124850_png.png](https://qiita-image-store.s3.amazonaws.com/0/99731/a5d7083d-8103-a297-76df-68addb52b7f4.png)

```java

    final ArrayList<String> list = new ArrayList<>();
        list.add("春");
        list.add("夏");
        list.add("秋");
        list.add("冬");
        
        new MaterialDialog.Builder(this)
                .title("タイトル")
                .items(list)
                .itemsCallback(new MaterialDialog.ListCallback() {
                    @Override
                    public void onSelection(MaterialDialog dialog, View view, int which, CharSequence text) {
                        Toast.makeText(MainActivity.this, list.get(which), Toast.LENGTH_SHORT).show();
                    }
                })
                .negativeText("閉じる")
                .show();

```

## 入力ダイアログ


![Screenshot_20161207-130828_png.png](https://qiita-image-store.s3.amazonaws.com/0/99731/2b9acf60-9510-2acc-cd9c-6cf4d25afe14.png)

```java

  new MaterialDialog.Builder(this)
                .title("タイトル")
                .content("内容")
                .inputType(InputType.TYPE_CLASS_TEXT)
                .input("ヒント", "初期値", new MaterialDialog.InputCallback() {
                    @Override
                    public void onInput(MaterialDialog dialog, CharSequence input) {
                        Toast.makeText(MainActivity.this, input, Toast.LENGTH_SHORT).show();
                    }
                }).show();
```

## 入力ダイアログ(文字数制限)

![Screenshot_20161207-132248_png.png](https://qiita-image-store.s3.amazonaws.com/0/99731/6b6f52fb-8f18-4210-addf-f30601791c8a.png)


```java

new MaterialDialog.Builder(this)
                .title("タイトル")
                .content("文字数2〜20まで")
                .inputType(InputType.TYPE_CLASS_TEXT)
                .inputRangeRes(2, 20, R.color.md_material_blue_600)
                .input("ヒント", "初期値", new MaterialDialog.InputCallback() {
                    @Override
                    public void onInput(MaterialDialog dialog, CharSequence input) {
                        Toast.makeText(MainActivity.this, input, Toast.LENGTH_SHORT).show();
                    }
                }).show();

```