web-dev-qa-db-ja.com

ヒントとともにEditTextの下にヘルパーテキストを表示

私はこれらの行で何かを作ろうとしています:

EditText example

Android:hint="Email Address"を使用してヒントを表示できますが、ヘルパーテキストを表示できません-これがメールのユーザー名になります

    <Android.support.design.widget.TextInputLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content">

        <EditText
            Android:id="@+id/et_username"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:ems="15"
            Android:hint="Username"
            app:et_helper="Username is preferably your registered email"/>

    </Android.support.design.widget.TextInputLayout>`

ユーザー名は、edittextの下に登録されている電子メールであることが望ましいです。

出力:

output

どんなポインタでも大歓迎です。ありがとうございました。

18
Amey Shirke

最善の方法は、TextInputLayoutを使用することです。 Googleは新しいデザインライブラリでそれを導入しました。 TextInputLayoutを使用するには、build.gradle依存関係に以下を追加する必要があります。

compile 'com.Android.support:design:22.2.0'

次に、それをxmlファイルで使用します。

<Android.support.design.widget.TextInputLayout
Android:id="@+id/textInputLayout"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content">

<EditText
    Android:id="@+id/editText"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:hint="Enter your name"/>
</Android.support.design.widget.TextInputLayout>

エラーをtrueに設定すると、テキストを設定できます。ただし、エラーを表示するためのものですが、使用に適しています。必要に応じて、色や書体を変更できます。

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

enter image description here

25

Design Support Library 28では、組み込みのヘルパーテキスト機能がTextInputLayoutに追加されています。

 implementation 'com.Android.support:design:28.0.0'

次に、xmlを使用して、またはプログラムでエラーを有効にします

 textInputLayout.isHelperTextEnabled=true
 textInputLayout.error="Email can not be Empty!!!"

また、ヒントとエラーを一緒に使用できるようになりました!!!

et.setOnFocusChangeListener { v, b ->
            if (b) {
                textInputLayout.helperText = "yourhelperText"

            } else {
                textInputLayout.helperText = null
                if(et.text.toString()==""){    // or any other validation
                    textInputLayout.error="Email can not be Empty!!!"
                }
            }

TextInputLayout | Android開発者

[〜#〜] edit [〜#〜]xmlまたはプログラムでエラーとhelperTextを有効にすることを忘れないでください。

7
Apoorva Jain

ヘルパーテキストはTextInputLayoutでは提供されません。ただし、以下の記事にはその実例があります。このクラスは、TextInputLayoutから拡張されたクラスを使用して、クラスに別のインジケーターとしてHelperTextを追加し、ErrorTextと連携して機能します。

https://medium.com/@elye.project/material-login-with-helper-text-232472400c15#.vm28p662v

3
Elye

だからあなたが欲しいのはこれです:

ヘルパーテキスト

このライブラリを使用してこれを実現できます。

https://github.com/rengwuxian/MaterialEditText

「ヘルパーテキスト」属性を設定して行の下にテキストを表示し、「ヒント」を設定して行の上にテキストを表示できます。以下は添付画像のサンプルレイアウトです

<com.rengwuxian.materialedittext.MaterialEditText
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:hint="Password"
        Android:inputType="textPassword"
        app:met_floatingLabel="normal"
        app:met_helperText="Must contain at least 8 characters"
        app:met_helperTextAlwaysShown="true"/>
1
yasirebricks

同様の質問をしました ここ 。 LinearLayoutで2つのEditTextビューを垂直に閉じたままにしたい場合は、方法がないと思います。私が思う1つの方法は、上部のEditTextのAndroid:gravityを「bottom」に設定し、「top」を下部のEditTextに設定できることです。しかし、RelativeLayoutでは、これは簡単なはずです。

TextInputLayoutは、ユーザーが入力しているときでも(EdiTextの上に)ヒントテキストを表示したい場合に使用できます。通常、ヒントをEditTextに設定しても、この方法では機能しません。ヒントテキストは、ビューにタッチしてフォーカスを当てると消えます。

0
cgr