追加されたEditTextはTextInputEditTextではありません。代わりにそのクラスの使用に切り替えてください


92

EditText内部でを使用していますTextInputLayoutが、サポートライブラリを23.2.0にアップグレードすると、logcatでこの警告が表示されます。通常EditTextとの違いは何TextInputEditTextですか?ドキュメントが見つからないようです。


サポートライブラリを23.2.1にアップグレードしましたが、TextInputEditTextをコードで解決できません。どのように解決しましたか?
Edijae Crusar

回答:


109

私もこれを考えていたのですが、ダニエルウィルソンがドキュメントを収集しましたが、訓練を受けていない人にとっては、あまり意味がありません。ここでは、それは命です:「抽出モードは、」携帯電話上の例の景観のために、スペースが小さすぎると示されていますビューのタイプを参照しています。入力方式エディター(IME)としてGoogleキーボード付きのGalaxy S4を使用しています。

IMEが表示されていない横長のUI

フォーカス(説明に基づく)に基づいて、TextInputLayoutヒントをエディターの外に押し出す動作を確認できます。ここでは特別なことは何もTextInputLayoutありません。これが本来の目的です。

IMEが表示されていない横長のUI

空の名前フィールドを編集するランドスケープUI

名前を編集すると、IMEが編集内容のヒントを与えていないことがわかります。

空の名前フィールドを編集するランドスケープUI

空の説明フィールドを編集するランドスケープUI

説明を編集すると、IMEが編集内容のヒントを提供していることがわかります。

空の説明フィールドを編集するランドスケープUI

レイアウトXML

2つのフィールドの違いは、タイプEditTextVS TextInputEditTextです。重要なことは、ここではそれがあるTextInputLayout持っているandroid:hintとき、これが事実である、とないラップのEditTextをTextInputEditTextJavaコードのの数行は大きな違いになります。

名前フィールド

<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>

3
サポートライブラリを23.2.1にアップグレードしましたが、TextInputEditTextをコードで解決できません。どのように解決しましたか?
Edijae Crusar

デザインライブラリもありますか?これはサポートされていません。
TWiStErRob

1
クイックノート:ドキュメントによると、android:hintプロパティはではTextInputEditTextなくに入るはずですTextInputLayout
DriesOeyen

1
@luxsypher私はそれをドロップして、TextInputLayoutにEditText
Edijae Crusar

1
@ jeet.chanchawatそれはアップキャストなので安全です。常に、必要な機能(= API)を提供する最も一般的なタイプを使用する必要があります。の使用TextInputEditTextは、UIの実装の詳細です。
TWiStErRob 2016年

34

ドキュメントはありませんが、クラスはEditText1つの追加機能を持つ通常のものです。

このクラスを使用すると、「抽出」モードのときにIMEにヒントを表示できます。

具体的にはを設定しEditorInfo.hintTextます。あなたにはわかりますTextInputLayoutあなたがヒントを指定することができるクラスと、それは外観ではなく、子の一環としてですEditTextウィジェット。

それを行う必要がある場合は、を使用してTextInputEditText、で指定したヒント情報に注意を払う必要がありますTextInputLayout


2
何か例は?私はあなたが何を示唆しているのか分かりません
ベヘリット

4

これらは基本的に同じものですが、TextInputEditText機能と属性のほうが多いと思います。私はに変更しましたがTextInputEditText、すべてが機能し、以前の標準と同じように見えましたEditText


私はすでにTextInputLayoutを使用しています。TextInputEditTextと呼ばれるEditTextの代替案について質問しています
Silvia H

すみません、私はTextInputEditTextについて話していましたが、レイアウトについては言っていました。私は答えを編集しました
Nick Mowen

0

唯一の違いは、デバイスが横向きモードの場合TextInputEditText、ヒントが表示され、表示EditTextされないことです。


-3

私はこの問題を抱えていて、私のxmlファイルでこの行を削除しました:

android: fitsSystemWindows = "true"

そしてエラーは消えました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.