TextInputLayout简单说使用

TextInputLayout是android.support.design.widget里的一个控件,须要配合EditText一块儿使用才行,并且必须是包裹住EditText,例如:android

<android.support.design.widget.TextInputLayout
        android:layout_height="wrap_content"
        app:hintTextAppearance="@style/hintStyle"
        android:layout_width="match_parent">

        <EditText
            android:layout_width="match_parent"
            android:layout_height="@dimen/height_150dp"
            android:layout_margin="@dimen/margin_5dp"
            android:gravity="top"
            android:hint="设置输入内容"
            android:maxLength="120"
            android:layout_gravity="center_horizontal|top"
            android:background="@null"
            android:textColor="@color/light_grey"/>
    </android.support.design.widget.TextInputLayout>

TextInputLayout是为了检测输入的合法性应运而生的新控件,咱们在平常项目中经常须要检测用户输入字符是否符合要求,必须合法性检查或者字符数目检查,TextInputLayout能够让提示变得灵活和醒目.好比咱们如今就构造一个输入合法手机号的EditText的代码.app

```
public class MainActivity extends AppCompatActivity {

@Bind(R.id.et)
EditText et;
@Bind(R.id.et_input_layout)
TextInputLayout etInputLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);

    et.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        //TextInputLayout的setError方法必须放到onTextChanged里
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
                if (isMobileNum(s.toString())){
                    Log.e("输入的是合法的字符串","输入的是合法的字符串");
                    etInputLayout.setErrorEnabled(false);
                }else{
                    Toast.makeText(MainActivity.this,"输入的不是合法的字符串,并让字符串归空",Toast.LENGTH_SHORT).show();
                    //启动错误提示
                    etInputLayout.setErrorEnabled(true);
                    etInputLayout.setError("输入的不是手机号");
                }
                isMobileNum(s.toString());
        }

        //当咱们有须要判断输入字符内容长度的要求时,放到afterTextChanged方法里
        @Override
        public void afterTextChanged(Editable s) {
            //判断输入内容的长度放在此处
        }
    });
}

public static boolean isMobileNum(String mobiles)
{
    Pattern p = Pattern
            .compile("^((13[0-9])|(15[^4,//D])|(18[0,5-9]))//d{8}$");
    Matcher m = p.matcher(mobiles);
    return m.matches();
}

}ide

相关文章
相关标签/搜索