技術備忘録・キャリアの見直し・情報収集など。


AlertDialogのカスタム方法

突然の技術備忘。
オリジナルレイアウト(XML)を使わないカスタム方法について。
見た目をいじるならAlertDialogFragmentかなと思ってたけど、
XML定義しなくても標準出力で結構できるじゃん!と思ったのでメモ。

あと、Markdownも触り始めたのでその練習も兼ねてますー。

続きを読む

1. 基本形

    // ダイアログ生成処理
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    builder.setTitle("タイトル");
    builder.setMessage("メッセージ");
    // 処理を実装する場合はリスナーをセット
    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            // クリック時の処理
        }
    });
    builder.setNegativeButton("NG", null);
    builder.setNeutralButton("NEUTRAL", null);
    builder.show(); // 表示

f:id:aimy74:20191125212108p:plain:w200

2. タイトル・メッセージのカスタム

  • タイトルカスタム
    // カスタムしたい内容
    TextView title = new TextView(getApplicationContext());
    title.setText("カスタムタイトル");
    title.setTextSize(30); //テキストサイズ
    title.setPadding(0,30,0,30); // 余白
    title.setTextColor(Color.BLUE); //テキストカラー
    title.setGravity(Gravity.CENTER_HORIZONTAL); // 中央配置

    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    builder.setCustomTitle(title); // カスタムタイトルをセット
    builder.setMessage("メッセージ");
    // 中略
    builder.show(); // 表示

f:id:aimy74:20191125212638p:plain:w200

  • メッセージカスタム
    // カスタムしたい内容
    TextView message = new TextView(getApplicationContext());
    message.setText("カスタムメッセージ");
    message.setTextColor(Color.YELLOW); //テキストカラー
    message.setBackgroundColor(Color.GRAY); // 背景色

    // ダイアログ生成処理
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    builder.setTitle("タイトル");
    builder.setView(message); // カスタムメッセージをセット
    // 中略
    builder.show(); // 表示

f:id:aimy74:20191125212944p:plain:w200

3. 画像を埋め込む

  • タイトル
    // ダイアログ生成処理
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    builder.setTitle("タイトル");
    builder.setMessage("メッセージ");
    builder.setIcon(R.drawable.sample) // アイコンのリソースを指定
    // 中略
    builder.show(); // 表示

f:id:aimy74:20191125213059p:plain:w200

  • メッセージ
    // 埋めこむ画像の設定
    ImageView image = new ImageView(getApplicationContext());
    image.setImageResource(R.drawable.sample_image);

    // ダイアログ生成処理
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    builder.setTitle("タイトル");
    builder.setMessage("メッセージ");
    builder.setView(image); // 画像をセット
    // 中略
    builder.show(); // 表示

f:id:aimy74:20191127231244p:plain

参考