1. EditText继承自TextView.
2.EditText属性
<item name="android:imeOptions">actionSearch</item>
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使布局可以滚动。