1. ホーム
  2. android

[解決済み] AndroidのEditTextをgoogleが説明するようなエラーメッセージを表示するように設計する。

2022-04-21 22:05:14

質問

が必要です。 EditText で、onErrorはこのようになります。

onErrorを呼び出すと、代わりに次のようになります。

注:このアプリはSDK 19(4.4.2)で動作しています。

最小SDKは1

setErrorのような、これを自動的に行うメソッドはないでしょうか。 それとも、私がそのためのコードを書かなければならないのでしょうか?

ありがとうございます。

解決方法は?

Googleが導入した TextInputLayout の一部として design-support-library .

基本的な例を以下に示します。

レイアウト

<android.support.design.widget.TextInputLayout
    android:id="@+id/text_input_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:errorEnabled="true">

    <android.support.design.widget.TextInputEditText
        android:id="@+id/edit_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Enter your name" />

</android.support.design.widget.TextInputLayout>

を設定することで app:errorEnabled="true" の属性として TextInputLayout は、エラーが表示されるとサイズを変更しないので、基本的にスペースを塞ぐことになります。

コード

の下にErrorを表示させるために EditText を呼び出すだけです。 #setError の上で TextInputLayout (子である EditText ):

TextInputLayout til = (TextInputLayout) findViewById(R.id.text_input_layout);
til.setError("You need to enter a name");

結果

エラーを非表示にして色合いをリセットするには、単に til.setError(null) .


備考

を使用するために TextInputLayout を使用するには、以下を build.gradle の依存関係にあります。

dependencies {
    compile 'com.android.support:design:25.1.0'
}


カスタムカラーを設定する

デフォルトでは EditText は赤色になります。もし別の色を表示する必要がある場合は、以下のコードを呼び出すと同時に setError .

editText.getBackground().setColorFilter(getResources().getColor(R.color.red_500_primary), PorterDuff.Mode.SRC_ATOP);

これを消去するには、単に clearColorFilter 関数は、次のようになります。

editText.getBackground().clearColorFilter();