EditText
内でTextInputLayout
を使用していますが、サポートライブラリを23.2.0にアップグレードした後、logcatでこの警告が表示されます。通常のEditText
とTextInputEditText
の違いは何ですか?私はそれのためのドキュメントを見つけることができないようです。
私もこれを疑問に思っていました Daniel Wilson はドキュメントを集めましたが、訓練を受けていない人にはあまり意味がありません。以下がそのすべてです。 "extract mode" は、スペースが小さすぎる場合に表示されるビューのタイプを指します。たとえば、携帯電話の風景です。 IMEとしてGalaxy S4とGoogleキーボードを使用しています。
説明に基づいたフォーカスに基づいて、TextInputLayout
がヒントをエディターの外に押し出している様子を見ることができます。ここでは特別なことは何もありません。これがTextInputLayout
が行うことです。
名前を編集すると、IMEが編集内容のヒントを提供していないことがわかります。
説明を編集すると、IMEが編集内容のヒントを提供していることがわかります。
2つのフィールドの違いは、タイプEditText
VS TextInputEditText
です。ここで重要なことは、TextInputLayout
にはラップされたEditTextではなくAndroid:hint
があることです。これは、TextInputEditText
の数行のJavaコードが大きな違いをもたらす場合です。
<Android.support.design.widget.TextInputLayout
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:hint="Item Name"
>
<EditText
Android:id="@+id/name"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
/>
</Android.support.design.widget.TextInputLayout>
<Android.support.design.widget.TextInputLayout
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:hint="Item Description"
>
<Android.support.design.widget.TextInputEditText
Android:id="@+id/description"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:inputType="textMultiLine"
Android:minLines="4"
Android:scrollbars="vertical"
/>
</Android.support.design.widget.TextInputLayout>
ドキュメントはありませんが、クラスは通常のEditText
に1つの追加機能があります:
このクラスを使用すると、「抽出」モードのときにIMEにヒントを表示できます。
具体的には EditorInfo.hintText
を設定します。 TextInputLayout
クラスでは、子EditText
ウィジェットの一部としてではなく、ヒントと外観を指定できます。
これを行う必要がある場合は、TextInputEditText
を使用して、TextInputLayout
で指定したヒント情報に注意を払う必要があります。
これらは本質的に同じものですが、TextInputEditText
にはより多くの機能があり、属性もあると思います。 TextInputEditText
に変更すると、すべてが機能し、標準のEditText
で以前と同じように見えました。