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

AndroidでEditTextの最小値(MIN)と最大値(MAX)を定義する方法

この記事では、AndroidアプリにおいてEditTextに入力できる数値の最小値(MIN)と最大値(MAX)を定義する方法を解説します。EditTextには標準で入力範囲を制限する機能が用意されていないため、InputFilterインターフェースを実装した独自クラス「MinMaxFilter」を作成し、数値を「1〜99」の範囲内に制限するサンプルを紹介します。

手順1:新規プロジェクトを作成する

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

手順2:レイアウトファイル(activity_main.xml)を編集する

res/layout/activity_main.xmlに以下のコードを記述します。android:inputTypeに「number」を指定すると、ソフトキーボードが数値入力モードになり、誤って文字が入力されるのを防げます。

<?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"
    android:layout_margin="16dp"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="1〜99の数値を入力"
        android:inputType="number"
        tools:ignore="Autofill" />

</RelativeLayout>

手順3:MinMaxFilterクラスを作成する

srcディレクトリにMinMaxFilter.javaという新しいクラスを作成し、以下のコードを記述します。このクラスが、入力値の範囲チェックを行う中核となる処理です。

package app.tutorialspoint.com.sample;

import android.text.InputFilter;
import android.text.Spanned;

public class MinMaxFilter implements InputFilter {

    private int mIntMin, mIntMax;

    public MinMaxFilter(int minValue, int maxValue) {
        this.mIntMin = minValue;
        this.mIntMax = maxValue;
    }

    public MinMaxFilter(String minValue, String maxValue) {
        this.mIntMin = Integer.parseInt(minValue);
        this.mIntMax = Integer.parseInt(maxValue);
    }

    @Override
    public CharSequence filter(CharSequence source, int start, int end,
                               Spanned dest, int dstart, int dend) {
        try {
            int input = Integer.parseInt(dest.toString() + source.toString());
            if (isInRange(mIntMin, mIntMax, input)) {
                return null;
            }
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }
        return "";
    }

    private boolean isInRange(int a, int b, int c) {
        return b > a ? c >= a && c <= b : c >= b && c <= a;
    }
}

filter()メソッドはユーザーが文字を入力するたびに呼び出されます。既存の入力内容(dest)と新しく入力された文字(source)を連結した値が許容範囲内かどうかを判定し、範囲外の場合は空文字列を返すことでその入力を拒否します。

手順4:MainActivity.javaを編集する

src/MainActivity.javaに以下のコードを記述し、EditTextに対して作成したフィルターを適用します。ここでは最小値に「1」、最大値に「99」を指定しています。

package app.tutorialspoint.com.sample;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.InputFilter;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        EditText editText = findViewById(R.id.editText);
        editText.setFilters(new InputFilter[]{ new MinMaxFilter("1", "99") });
    }
}

手順5:AndroidManifest.xmlを確認する

androidManifest.xmlは以下のようになっています。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.tutorialspoint.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でEditTextの最小値(MIN)と最大値(MAX)を定義する方法

この状態で「100」と入力しようとしても最後の「0」が受け付けられず、「1〜99」の範囲内の数値だけを入力できます。別の範囲で制限したい場合は、MinMaxFilterのコンストラクタに渡す最小値・最大値を変更するだけで簡単に対応できます。

  1. ExcelのMIN・MAX・AVERAGE関数の使い方|平均値・最小値・最大値の求め方

    Excelの関数は、セル範囲に対して数学的な計算を実行するための便利な機能です。特によく使われる関数には、SUM(合計)、AVERAGE(平均)、COUNT(個数)、MIN(最小値)、MAX(最大値)などがあります。データの平均値・最小値・最大値を調べたいときは、AVERAGE、MIN、MAX関数を使えば簡単に求められます。この記事では、Excelでこれらの値を計算する具体的な手順をわかりやすく解説します。 ExcelのAVERAGE・MIN・MAX関数とは AVERAGE関数:指定したセル範囲内の数値の平均値(相加平均)を返します。数値のほか、名前、配列、数値を含むセル参照なども引数として

  2. PCとAndroidでGoogleセーフサーチをオンにする方法を徹底解説

    インターネットは、まさに世界の情報スーパーハイウェイです。日常生活に役立つ膨大な有益な情報がある一方で、同じくらいたくさんの不快で危険なコンテンツも存在しています。うっかり入力したひとつの検索ワードによって、望ましくないコンテンツがGoogleの検索履歴に残り、オンライン上のプロファイルデータの一部になってしまうこともあるのです。幸いにも、Googleでは検索エンジンの利用時に不適切なコンテンツをフィルタリングする機能が提供されています。PCで検索結果をフィルタリングする方法まず、GmailのメインページにアクセスしてGoogleアカウントにログインします。画面右上にあるプロフィール写真をクリ