1. EditText继承自TextView.
2.EditText属性
<item name="android:imeOptions">actionSearch</item>
通过android:imeOptions 设置右下角按钮显示内容.常用的如actionGo,actionSearch,actionSend,actionNext,actionDone等。
android:inputType="phone"
通过android:inputType属性设置输入内容的限制。number,phone,textPassword等等。
注意 android:inputType="numberDecimal",这样允许用户输入数字和点号,这是可以只输入点号的。所以在从编辑框获取内容转化为Double类型时需要捕获异常。
try {
double budget = Double.valueOf(budgetStr);
if (budget == 0) {
Toast.makeText(SetBudgetActivity.this, "设置金额不能为0", Toast.LENGTH_LONG).show();
return;
}
} catch (NumberFormatException e) {
Toast.makeText(SetBudgetActivity.this, "请输入数字", Toast.LENGTH_LONG).show();
return;
}
3.事件监听:
点击事件监听:
EditText search = (EditText) getView().findViewById(R.id.search);
search.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP) {
onSearch();
return true;
}
return false;
}
});
注意如果没有输入内容时软键盘是不应该隐藏的,即在判断用户输入正确后才隐藏软键盘。
//隐藏软键盘
View focusView = getActivity().getCurrentFocus();
if (focusView != null) {
((InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(focusView.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
编辑框内容监听:
search.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) {
//在这里检测用户的输入,比如检测用户输入大于100,输入需要屏蔽的字符等等
}
@Override
public void afterTextChanged(Editable s) {//在这里检测用户输入结束
String key = s.toString();
if (TextUtils.isEmpty(key)) {
View focusView = getCurrentFocus();
if (focusView != null) {
((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(focusView.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
}
});
4.编辑框错误提示
方式1:使用Toast进行提示
方式2:通过TextView的方法setError()进行提示,在EditText右边弹出错误信息。需要注意:错误提示信息和提示框背景颜色一样,都是白色,需要修改,否则看不到文字。
setError(null)错误信息将被清除。
CharSequence html = Html.fromHtml("<font color=#808183>请输入用户名</font>");
phoneEdit.setError(html);
<item name="android:textColorPrimaryInverse">@android:color/primary_text_light</item>
将文字设置为黑色。
windowSoftInputMode属性主要有adjustPan,adjustResize
adjustPan不进行重新布局
adjustResize重新布局,调整布局以留出软键盘空间。
所以在AndroidManifest.xml的Activity设置属性:android:windowSoftInputMode = "adjustResize|stateAlwaysHidden"
stateAlwaysHidden进入activity时不主动弹出软键盘。注意这个需要在布局外边添加一个ScrollView使布局可以滚动。