API 21은 다음 기능을 사용하는 방법을 제공합니까?
http://www.google.com/design/spec/components/text-fields.html#text-fields-floating-labels
EditText 힌트를 플로팅하려고합니다.
감사!
API 21은 다음 기능을 사용하는 방법을 제공합니까?
http://www.google.com/design/spec/components/text-fields.html#text-fields-floating-labels
EditText 힌트를 플로팅하려고합니다.
감사!
답변:
모듈 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>
부동 힌트 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>
22.2.0
implementation 'com.google.android.material:material:1.0.0-rc01'
.
예, 2015 년 5 월 29 일부터이 기능은 이제 Android 디자인 지원 라이브러리 에서 제공됩니다.
이 라이브러리에는 다음에 대한 지원이 포함되어 있습니다.
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 내에서 허용된다는 것을 이해하지 못할 수 있습니다.
Android는 기본 방법을 제공하지 않았습니다. AppCompat도 아닙니다.
이 라이브러리를 사용해보십시오 : https://github.com/rengwuxian/MaterialEditText
이것은 당신이 원하는 것일 수 있습니다.
지원 라이브러리를 가져오고 프로젝트의 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");
setHint()
. EditText
레이아웃 xml에 설정된 힌트와 함께 작동합니다 .
@andruboy의 https://gist.github.com/chrisbanes/11247418 제안 이 아마도 최선의 방법 일 것입니다.
https://github.com/thebnich/FloatingHintEditText 종류는 appcompat-v7 v21.0.0에서 작동하지만 v21.0.0은 하위 클래스가있는 강조 색상을 지원하지 않으므로 EditText
의 밑줄은 FloatingHintEditText
기본 단색 검정 또는 흰색입니다. 또한 패딩이 머티리얼 스타일에 최적화되어 있지 않으므로 EditText
조정해야 할 수도 있습니다.
아니에요. 나는 이것이 향후 API 릴리스에서 기대할 수 있지만 지금은 EditText에 붙어 있습니다. 또 다른 옵션은 다음 라이브러리입니다.
https://github.com/marvinlabs/android-floatinglabel-widgets
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.*" />
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>