추가 된 EditText는 TextInputEditText가 아닙니다. 대신 해당 클래스를 사용하도록 전환하십시오.


94

EditText내부를 사용하고 TextInputLayout있지만 지원 라이브러리를 23.2.0으로 업그레이드 한 후 logcat에 다음 경고가 표시됩니다. 일반 EditText및 a 의 차이점은 무엇입니까 TextInputEditText? 이에 대한 문서를 찾을 수없는 것 같습니다.


내 지원 라이브러리를 23.2.1로 업그레이드했지만 여전히 내 코드에서 TextInputEditText를 확인할 수 없습니다 . 어떻게 해결 했습니까?
Edijae Crusar

답변:


110

이것도 궁금해서 다니엘 윌슨 이 문서를 모았지만 훈련받지 않은 눈에는 그다지 의미가 없습니다. 여기에 대한 내용이 있습니다. "추출 모드" 는 공간이 너무 작을 때 표시되는보기 유형 (예 : 휴대 전화의 가로 모드)을 나타냅니다. Google 키보드와 함께 Galaxy S4를 IME (입력기)로 사용하고 있습니다.

IME가 표시되지 않는 가로 UI

포커스 (Description)에 TextInputLayout따라 에디터 외부에서 힌트를 밀어내는 동작을 볼 수 있습니다 . 여기에 특별한 것은 없습니다. 이것이 TextInputLayout해야 할 일입니다.

IME가 표시되지 않는 가로 UI

풍경 UI 편집 빈 이름 필드

이름을 편집하면 IME가 편집중인 내용에 대한 힌트를 제공하지 않음을 알 수 있습니다.

풍경 UI 편집 빈 이름 필드

풍경 UI 편집 빈 설명 필드

설명을 편집하면 IME가 편집중인 내용에 대한 힌트를 제공함을 알 수 있습니다.

풍경 UI 편집 빈 설명 필드

레이아웃 XML

두 필드의 차이점은 유형 EditTextVS TextInputEditText입니다. 중요한 것은 여기 즉 TextInputLayoutandroid:hint경우이 경우, 그리고 랩 글고 치기를 TextInputEditText자바 코드의 몇 줄은 큰 차이가 있습니다.

이름 필드

<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에 글고 퍼팅을
Edijae Crusar을

1
@ jeet.chanchawat 그것은 upcast이므로 안전합니다. 항상 필요한 기능 (= API)을 제공하는 가장 일반적인 유형을 사용해야합니다. 사용 TextInputEditText은 UI의 구현 세부 사항입니다.
TWiStErRob

35

그것에 대한 문서는 없지만 클래스는 EditText단일 추가 기능 이있는 일반 클래스입니다 .

이 클래스를 사용하면 '추출'모드에서 IME에 힌트를 표시 할 수 있습니다.

구체적으로 EditorInfo.hintText. 당신은에 알 수 있습니다 TextInputLayout당신이 힌트를 지정할 수 있습니다 클래스와는 외관보다는 자식의 한 부분으로의 EditText위젯.

그렇게해야하는 경우를 사용해야 TextInputEditText하므로에서 지정한 힌트 정보에주의를 기울여야합니다 TextInputLayout.


2
어떤 예? 나는 당신이 무엇을 제안하는지 모른다
behelit

4

그것들은 본질적으로 똑같지 만, TextInputEditText더 많은 기능과 속성이 있다고 생각 합니다. 나는로 변경 TextInputEditText했고 모든 것이 작동했고 이전에 표준에서했던 것처럼 보였다 EditText.


저는 이미 TextInputLayout을 사용하고 있습니다. TextInputEditText라는 EditText의 대안에 대해 묻습니다
Silvia H

죄송합니다. TextInputEditText에 대해 이야기했지만 레이아웃이 말했습니다. 나는 대답 편집
닉 Mowen

0

유일한 차이점은 장치가 가로 모드에 TextInputEditText있을 때 힌트를 표시하지만 표시 EditText하지 않는다는 것입니다.


-3

이 문제가 발생하여 xml 파일에서 다음 줄을 삭제했습니다.

android: fitsSystemWindows = "true"

오류가 사라졌습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.