Android
 Computer >> コンピューター >  >> プログラミング >> Android

Androidでカスタムダイアログボックスを作成する方法を徹底解説!初心者向けステップガイド

この記事では、Androidアプリでカスタムメッセージダイアログを作成する方法を、ステップごとにわかりやすく解説します。独自レイアウトのダイアログを活用すれば、ユーザーにテキスト入力を促すUIなど、標準のAlertDialogでは実現できない柔軟なデザインが可能になります。

完成するアプリの動作イメージ

メイン画面の「Show Message」ボタンをタップするとカスタムダイアログが表示され、メッセージを入力して「Okay」を押すと、その内容が画面上部のTextViewに反映されます。「Cancel」を押した場合は、入力内容を破棄してダイアログが閉じられます。

手順1:Android Studioで新規プロジェクトを作成

Android Studioを起動し、メニューから「File」→「New Project」を選択します。必要な項目をすべて入力して、新しいプロジェクトを作成してください。

手順2:activity_main.xmlにコードを追加

res/layout/activity_main.xml を開き、以下のコードを記述します。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="My Custom Message"
        android:textSize="22sp"
        android:textAlignment="center"
        android:layout_marginTop="30dp"
        android:id="@+id/myCustommessage"/>
    <Button
        android:layout_width="140dp"
        android:layout_height="80dp"
        android:layout_centerInParent="true"
        android:text="Show Message"
        android:backgroundTint="@color/colorPrimary"
        android:textSize="20dp"
        android:textColor="#ffffff"
        android:onClick="btn_showMessage" />
</RelativeLayout>

手順3:custom_dialog.xmlレイアウトファイルを作成

プロジェクトツリーから「res」→「layout」を右クリックし、「New」→「Layout resource file」を選択します。ファイル名を「custom_dialog」とし、ルート要素(Root element)に「LinearLayout」を指定してOKを押しましょう。

手順4:custom_dialog.xmlにコードを追加

作成した custom_dialog.xml に、ダイアログ本体となる以下のレイアウトを記述します。テキスト入力欄と「Cancel」「Okay」の2つのボタンを配置しています。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="15dp">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Enter your Message"
        android:textSize="22sp"
        android:textAlignment="center" />
    <EditText
        android:id="@+id/txt_input"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:hint="Enter your Message"
        android:textSize="20sp" />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp">
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:backgroundTint="@color/colorPrimary"
            android:text="Cancel"
            android:textColor="#ffffff"
            android:textSize="18sp"
            android:layout_weight="1"
            android:id="@+id/btn_cancel"/>
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:backgroundTint="@color/colorPrimary"
            android:text="Okay"
            android:textColor="#ffffff"
            android:textSize="18sp"
            android:layout_weight="1"
            android:id="@+id/btn_okay"/>
    </LinearLayout>
</LinearLayout>

手順5:MainActivity.javaにコードを追加

src/MainActivity.java に、ダイアログを生成・表示するための以下のコードを記述します。LayoutInflaterでカスタムレイアウトを展開し、AlertDialog.Builderにセットするのがポイントです。

import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
    TextView myCustomMessage;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myCustomMessage = (TextView)findViewById(R.id.myCustommessage);
    }
    public void btn_showMessage(View view){
        final AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
        View mView = getLayoutInflater().inflate(R.layout.custom_dialog,null);
        final EditText txt_inputText = (EditText)mView.findViewById(R.id.txt_input);
        Button btn_cancel = (Button)mView.findViewById(R.id.btn_cancel);
        Button btn_okay = (Button)mView.findViewById(R.id.btn_okay);
        alert.setView(mView);
        final AlertDialog alertDialog = alert.create();
        alertDialog.setCanceledOnTouchOutside(false);
        btn_cancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                alertDialog.dismiss();
            }
        });
        btn_okay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myCustomMessage.setText(txt_inputText.getText().toString());
                alertDialog.dismiss();
            }
        });
        alertDialog.show();
    }
}

手順6:AndroidManifest.xmlを確認

androidManifest.xml は以下のようになります。特別なパーミッションは不要ですが、MainActivityが正しくランチャーアクティビティとして登録されていることを確認しておきましょう。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.sample">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

アプリを実行して動作を確認しよう

それでは、実際にアプリを実行してみましょう。ここでは、実機のAndroidスマートフォンをPCに接続しているものとして説明を進めます。Android Studioでプロジェクト内のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックしてください。デバイス選択画面で接続したスマートフォンを選択すると、端末側にアプリの初期画面が表示されます。

Androidでカスタムダイアログボックスを作成する方法を徹底解説!初心者向けステップガイド


Androidでカスタムダイアログボックスを作成する方法を徹底解説!初心者向けステップガイド

  1. AndroidのActionBarにカスタムビューを表示する方法をステップ解説

    ActionBarにカスタムビューを表示するには? このチュートリアルでは、AndroidアプリのActionBar(アクションバー)に独自のカスタムビューを表示する方法を、サンプルコードとともに解説します。 カスタムビューを活用すれば、デフォルトのタイトル表示だけでは実現できない、ロゴやタイトル、アイコンを自由に配置したオリジナルのヘッダーを作成できます。 実装手順 ステップ1:新規プロジェクトを作成する Android Studioを起動し、メニューから「File」→「New Project」を選択します。必要な項目をすべて入力して、新しいプロジェクトを作成しましょう。 ステップ2:res

  2. Outlookでカスタムビューを作成する方法【初心者向け完全ガイド】

    Microsoft Outlookには、受信トレイの見た目を変えられるさまざまなレイアウトが用意されています。代表的なのはコンパクト、シングル、プレビューの3つです。さらに、受信トレイだけでなく、予定表・連絡先・タスクなどの画面でも表示形式を変更できます。では、自分好みのオリジナル(カスタム)ビューを作りたい場合はどうすればよいのでしょうか。実は、Outlookに標準搭載されている「ビューの変更」機能を使えば、誰でも簡単にカスタムビューを作成できます。 Outlookの「ビューの変更」機能とは? 「ビューの変更」機能は、現在の表示形式を別のビューへ切り替えるための機能です。メニューから既定のビ