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

【Android】ダイアログの外側をタップしてダイアログを閉じる方法

この記事では、Androidアプリにおいてダイアログボックスの外側をタップした際にダイアログを閉じる(dismissする)方法を解説します。

ポイントとなるのは setCanceledOnTouchOutside(true) メソッドです。このメソッドに true を渡すことで、ダイアログの外側がタップされると自動的にダイアログが閉じられるようになります。

実装手順

ステップ1:新規プロジェクトの作成

Android Studioで新しいプロジェクトを作成します。「File」→「New Project」を選択し、必要な項目を入力してプロジェクトを作成してください。

ステップ2:レイアウトファイルの作成

res/layout/activity_main.xml に以下のコードを追加します。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
    android:layout_width = "match_parent"
    android:gravity = "center"
    android:layout_height = "match_parent">
    <TextView
        android:id = "@+id/click"
        android:layout_width = "wrap_content"
        android:textSize = "30sp"
        android:layout_height = "wrap_content"
        android:text = "Click"/>
</LinearLayout>

ステップ3:MainActivity.java の実装

src/MainActivity.java に以下のコードを追加します。

import android.annotation.TargetApi;
import android.content.DialogInterface;
import android.os.Build;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
    TextView text;
    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text = findViewById(R.id.click);
        text.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showAlertBox();
            }
        });
    }
    private void showAlertBox() {
        AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
        alertDialog.setTitle("AlertDialog");
        alertDialog.setMessage("Do you wanna close the dialog box? ");
        alertDialog.setPositiveButton("yes", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this,"you clicked on yes button",Toast.LENGTH_LONG).show();
            }
        });
        alertDialog.setNegativeButton("No", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
            }
        });
        AlertDialog alert = alertDialog.create();
        alert.setCanceledOnTouchOutside(true);
        alert.show();
    }
}

上記コードの中で特に重要なのは alert.setCanceledOnTouchOutside(true); の一行です。true を指定することで、ダイアログの外側をタップしただけでダイアログが閉じるようになります。逆に、外側をタップしても閉じたくない場合は false を指定してください。

ステップ4:AndroidManifest.xml の設定

androidManifest.xml に以下のコードを追加します。

<?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="app.com.sample.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

アプリの実行と動作確認

それでは、アプリケーションを実行してみましょう。実際のAndroid端末をパソコンに接続しているものとします。Android Studioからアプリを実行するには、プロジェクト内のいずれかのアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックします。実行デバイスとして自分のモバイル端末を選択すると、端末に以下のような初期画面が表示されます。

【Android】ダイアログの外側をタップしてダイアログを閉じる方法

画面上のテキストをタップするとAlertDialogが表示されます。ここでダイアログの外側をタップすると、setCanceledOnTouchOutside(true) の効果により、ダイアログが自動的に閉じることが確認できます。

【Android】ダイアログの外側をタップしてダイアログを閉じる方法

  1. 【Android】データベースとRecyclerViewを連携させる方法を実装例つきで解説

    この記事では、AndroidアプリでRecyclerViewとデータベース(SQLite)を連携させて使用する方法を、実際のサンプルコードとともに解説します。連絡先の登録・表示・編集・削除ができるシンプルなアプリを題材に、実装手順をステップごとに見ていきましょう。ステップ1:プロジェクトの作成と依存関係の追加まず、Android Studioで新しいプロジェクトを作成します。メニューから「File → New Project」を選択し、必要事項を入力してプロジェクトを作成してください。続いて、build.gradle(Module: app)に以下の依存関係を追加します。implementat

  2. NordVPNでNetflixを視聴する方法|海外リージョン制限を解除して楽しむ完全ガイド

    好きでも嫌いでも、テレビやノートパソコンの画面に釘付けになってNetflixを観る時間は、私たちが必要としている(そして受けるに値する)最高のセラピーのようなものです。映画からTVドラマまで幅広いコンテンツをストリーミング配信するNetflixは、間違いなく最もエンターテインメント性の高いプラットフォームの一つです。ミレニアル世代が何よりもNetflixを選ぶ理由も、納得できますよね。 しかし正直なところ、他の国や地域のNetflixコンテンツにアクセスできたら、どれほど嬉しいでしょうか?想像するだけでワクワクしませんか?まだまだ観たい作品はたくさんあるのですから、選択肢は多いほうが断然楽し