Android EditText보기 머티리얼 디자인의 플로팅 힌트


96

API 21은 다음 기능을 사용하는 방법을 제공합니까?

http://www.google.com/design/spec/components/text-fields.html#text-fields-floating-labels

EditText 힌트를 플로팅하려고합니다.

감사!



검색 중에 이것도 만났지만 Android가 기본 방법을 제공하는지 궁금합니다.
xsorifc28 2014 년

1
이로 인해 Android에 문제가 있다고 생각하게됩니다. 머티리얼 디자인을위한 API에는 몇 가지 누락 된 간격이 있습니다. 또 다른 예는 Float Action Button입니다.
motobói

답변:


4

모듈 build.gradle 파일에 다음을 추가해야합니다.

implementation 'com.google.android.material:material:1.0.0'

XML에서 com.google.android.material.textfield.TextInputLayout을 사용합니다.

       <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/text_input_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/my_hint">

        <EditText
            android:id="@+id/editText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="UserName"/>
   </com.google.android.material.textfield.TextInputLayout>

108

부동 힌트 EditText :

gradle에서 아래 종속성을 추가하십시오.

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

레이아웃에서 :

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

        <EditText
            android:id="@+id/editText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="UserName"/>
    </android.support.design.widget.TextInputLayout>

3
:주의 그것의 사용자 초점 전에 TextInputLayout이 글고 힌트를 표시되지 않는 버그가 디자인 지원 라이브러리에있는22.2.0
이반 차우

1
이 XML에서 EditText와 TextInputEditText를 사용하는 것의 차이점은 무엇입니까?
안드로이드 개발자

2
새로 이름이 바뀐 종속성은 implementation 'com.google.android.material:material:1.0.0-rc01'.
rmtheis aug

60

예, 2015 년 5 월 29 일부터이 기능은 이제 Android 디자인 지원 라이브러리 에서 제공됩니다.

이 라이브러리에는 다음에 대한 지원이 포함되어 있습니다.

  • 플로팅 라벨
  • 플로팅 작업 버튼
  • 스낵바
  • 탐색 창
  • 그리고 더

3
OP와 같은 EditText가있는 플로팅 레이블에 대한 자습서를 알고 있습니까?
AdamMc331 2015-08-28


1
와우 감사합니다! 나는 이것을 살펴보고 어떻게 진행되는지 알려줄 것입니다!
AdamMc331

2
세 번째는 내가 찾던 것이었다. 나는 TextInputLayout을 우연히 발견했지만 좋은 예를 찾을 수 없었습니다 (아마 모든 잘못된 용어를 검색했을 것입니다). 감사!
AdamMc331 2015-08-28

18

Android 지원 라이브러리는 종속성의 gradle 내에서 가져올 수 있습니다.

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

GradlePlease에 포함되어야합니다! 그리고 그것을 사용하는 예로서 :

 <android.support.design.widget.TextInputLayout
    android:id="@+id/to_text_input_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <AutoCompleteTextView
        android:id="@+id/autoCompleteTextViewTo"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="To"
        android:layout_marginTop="45dp"
        />
</android.support.design.widget.TextInputLayout>

Btw, 편집기는 AutoCompleteTextView가 TextInputLayout 내에서 허용된다는 것을 이해하지 못할 수 있습니다.


11

Android는 기본 방법을 제공하지 않았습니다. AppCompat도 아닙니다.

이 라이브러리를 사용해보십시오 : https://github.com/rengwuxian/MaterialEditText

이것은 당신이 원하는 것일 수 있습니다.


1
gradle sync에서 오류 : (1) "속성"색상 "이 이미 정의되었습니다"라는 메시지가 나타납니다. 아마도 appcompat-v7 때문일 것입니다. 나는 그것을 제거 할 수 없습니다. 애니 제안?
mdzeko

MaterialEditText는 "color"라는 속성을 정의하지 않았으므로 다른 곳에서 문제가있는 것 같습니다.
rengwuxian

9

지원 라이브러리를 가져오고 프로젝트의 build.gradle 파일에서 프로젝트의 종속성에 다음 줄을 추가합니다.

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    compile 'com.android.support:design:22.2.0'
    compile 'com.android.support:appcompat-v7:22.2.0'
}

UI 레이아웃에서 다음 TextInputLayout을 사용하십시오.

<android.support.design.widget.TextInputLayout
    android:id="@+id/usernameWrapper"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <EditText
        android:id="@+id/username"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textEmailAddress"
        android:hint="Username"/>

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

또한 setContentView 호출 직후 TextInputLayout에서 setHint를 호출합니다. 부동 레이블에 애니메이션을 적용하려면 setHint 메서드를 사용하여 힌트를 설정하기 만하면되기 때문입니다.

final TextInputLayout usernameWrapper = (TextInputLayout) findViewById(R.id.usernameWrapper);
usernameWrapper.setHint("Username");

1
최소한 23.1.1을 사용하면 setHint(). EditText레이아웃 xml에 설정된 힌트와 함께 작동합니다 .
Ionoclast Brigham

3

@andruboy의 https://gist.github.com/chrisbanes/11247418 제안 이 아마도 최선의 방법 일 것입니다.

https://github.com/thebnich/FloatingHintEditText 종류는 appcompat-v7 v21.0.0에서 작동하지만 v21.0.0은 하위 클래스가있는 강조 색상을 지원하지 않으므로 EditText의 밑줄은 FloatingHintEditText기본 단색 검정 또는 흰색입니다. 또한 패딩이 머티리얼 스타일에 최적화되어 있지 않으므로 EditText조정해야 할 수도 있습니다.


감사합니다. google.com/design/spec/components/ 에서와 같이 Google이 머티리얼 스타일 편집 텍스트 경고를 생성하기위한 API를 제공하지 않은 것 같습니다 . 아마추어 질문에 대해 죄송합니다. 머티리얼 디자인에 많이 적용하려고합니다. Google의 API / 라이브러리를 사용하고 외부 라이브러리와 비교하여 제공된 모든 것을 파악하려고 할 수 있습니다. 다시 한 번 감사드립니다!
xsorifc28 2014 년


0

InputTextLayout을 더 쉽게 사용하기 위해 XML 코드를 절반 이하로 자르고 오류 메시지를 설정할 수있는 기능과 힌트 메시지를 제공하는이 라이브러리를 만들었습니다. 검증. https://github.com/TeleClinic/SmartEditText

간단히 추가

compile 'com.github.TeleClinic:SmartEditText:0.1.0'

그런 다음 다음과 같이 할 수 있습니다.

<com.teleclinic.kabdo.smartmaterialedittext.CustomViews.SmartEditText
    android:id="@+id/emailSmartEditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:setLabel="Email"
    app:setMandatoryErrorMsg="Mandatory field"
    app:setRegexErrorMsg="Wrong email format"
    app:setRegexType="EMAIL_VALIDATION" />

<com.teleclinic.kabdo.smartmaterialedittext.CustomViews.SmartEditText
    android:id="@+id/passwordSmartEditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:setLabel="Password"
    app:setMandatoryErrorMsg="Mandatory field"
    app:setPasswordField="true"
    app:setRegexErrorMsg="Weak password"
    app:setRegexType="MEDIUM_PASSWORD_VALIDATION" />

<com.teleclinic.kabdo.smartmaterialedittext.CustomViews.SmartEditText
    android:id="@+id/ageSmartEditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:setLabel="Age"
    app:setMandatory="false"
    app:setRegexErrorMsg="Is that really your age :D?"
    app:setRegexString=".*\\d.*" />

0

이 방법으로 시도

여기에 이미지 설명 입력

  dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile 'com.android.support:design:23.0.1'
  }

자세한 내용은 여기를 클릭 하십시오.


0

Material Components Library 에서 TextInputLayout제공하는 사용 :

    <com.google.android.material.textfield.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Label">

        <com.google.android.material.textfield.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </com.google.android.material.textfield.TextInputLayout>

여기에 이미지 설명 입력

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