这是一个示例,展示如何验证用户输入的 EditText 并相应地更新视图边框。
首先实现 TextWater 并将其附加到您的 EditView,如下所示:
活动代码:
public class MainActivity extends ActionBarActivity {
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.edittext);
// Attach TextWatcher
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void afterTextChanged(Editable editable) {
// A-Z, a-z, space
String pattern = "^([a-zA-Z ]*)$";
// Check for pattern match
if (!editable.toString().matches(pattern)) {
// Set red border
editText.setBackgroundResource(R.drawable.red_border);
} else {
// Restore default border
editText.setBackgroundResource(R.drawable.grey_border);
}
}
});
}
}
用于在 EditText 周围绘制边框的两个可绘制文件
/res/drawable/grey_border.xml
<?xml version="1.0" encoding="utf-8"?>
<shape
android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF"/>
<stroke
android:width="2dp"
android:color="#000000"/>
</shape>
/res/drawable/grey_border.xml
<?xml version="1.0" encoding="utf-8"?>
<shape
android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF"/>
<stroke
android:width="2dp"
android:color="#ff0000"/>
</shape>
最后是布局文件:
/res/layout/activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:padding="10dp"
android:layout_margin="10dp"
android:background="@drawable/grey_border"
android:id="@+id/edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</RelativeLayout>