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提示。
谢谢!
Answers:
您需要将以下内容添加到模块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'
。
可以在gradle中的依赖项中导入Android支持库:
compile 'com.android.support:design:22.2.0'
它应该包含在Gradle中!并以使用它为例:
<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>
顺便说一句,编辑器可能无法理解TextInputLayout中允许使用AutoCompleteTextView。
导入支持库,在项目的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
将是默认的纯黑色或白色。同样,填充也没有针对Material样式进行优化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.*" />
使用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>