前言
官网:TextInputLayout
引入 material 包:
implementation 'com.google.android.material:material:1.2.1'
属性
属性含义counterEnabled字符计数是否可用counterMaxLength计数最大的长度counterOverflowTextAppearance计数超过最大长度时显示的文本样式counterTextAppearance显示的计数的文本样式errorEnabled显示错误信息是否可用errorTextAppearance显示错误信息的文本样式hint浮动标签hintEnabled控制是否显示浮动标签hintTextAppearance浮动标签的文本样式passwordToggleDrawable密码可见切换图标passwordToggleEnabled控制是否显示密码可见切换图标
使用
- 带浮动标签的文本框
布局文件
2. 带字符计数的文本框
布局
在 Activity 中设置,计数的长度:
public class MainActivity extends BaseActivity {
@BindView(R.id.text_input_layout_user)
TextInputLayout mTextInputLayout;
@Override
public int getLayoutId() {
return R.layout.activity_main;
}
@Override
public void initView() {
// 设置可以计数
mTextInputLayout.setCounterEnabled(true);
// 计数的最大值
mTextInputLayout.setCounterMaxLength(10);
}
}
3. 显示密码可见和隐藏的切换按钮
布局
在 Activity 中设置:
public class MainActivity extends BaseActivity {
@BindView(R.id.til_name)
TextInputLayout mLayoutName;
@BindView(R.id.et_name)
TextInputEditText mName;
@BindView(R.id.btn_login)
MaterialButton mLogin;
@Override
public int getLayoutId() {
return R.layout.activity_main;
}
@Override
public void initView() {
mName.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
mLayoutName.setErrorEnabled(false);
}
@Override
public void afterTextChanged(Editable s) {
}
});
mLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = mName.getText().toString().trim();
if (name.length() > mLayoutName.getCounterMaxLength()) {
mLayoutName.setError("输入内容超过上限");
}
}
});
}
}
style 风格
@color/light_grey_color
@color/light_grey_color
@color/black
18sp
@color/red_deep
@color/orange