EditText的使用
属性
- android:drawableLeft:在text的左边输出一个drawable,可以是图片,样式,颜色等。
- android:drawableRight:在text的右边输出一个drawable,可以是图片,样式,颜色等。
- android:inputType:设置输入字符的类型,"numberDecimal"表示可以输入带小数点的浮点数,同时当输入文字时键盘为数字键盘
- android:imeOptions:设置默认情况下软键盘右下角的按钮显示内容,若为"actionSearch",显示为搜索
- android:hint:设置默认情况下显示在空间上的提示,当输入内容时,提示消失
- android:maxLines:设置文本的最大显示行数,与width或者layout_width结合使用,超出部分自动换行,超出行数将不显示。
事件
addTextChangedListener
是android文本框改变的一个监听器,一般用于统计文本输入、监测输入是否符合规范等。要想监听文本框的文本改变情况需要实现:beforeTextChanged、onTextChanged、 afterTextChanged三个方法。这里主要用来检测是否输入内容,若输入内容,则显示搜索按钮,以及×号的出现。
输入内容时:
未输入内容时:
licheng.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) { } @Override public void afterTextChanged(Editable s) { lc_end=licheng.getText().toString().trim(); //Toast.makeText(MainActivity.this, lc_end+"enen", Toast.LENGTH_SHORT).show(); if(lc_end.equals("")) { //Toast.makeText(MainActivity.this, "HI", Toast.LENGTH_SHORT).show(); btn_search.setVisibility(Button.GONE); Drawable leftDrawable = getResources().getDrawable(R.drawable.ic_search_grey_600_24dp); leftDrawable.setBounds(0, 0, leftDrawable.getMinimumWidth(), leftDrawable.getMinimumHeight()); licheng.setCompoundDrawables(leftDrawable, null, null, null); }else{ //Toast.makeText(MainActivity.this, "hello", Toast.LENGTH_SHORT).show(); btn_search.setVisibility(Button.VISIBLE); Drawable rightDrawable = getResources().getDrawable(R.drawable.ic_clear_black_18dp); rightDrawable.setBounds(0, 0, rightDrawable.getMinimumWidth(), rightDrawable.getMinimumHeight()); Drawable leftDrawable = getResources().getDrawable(R.drawable.ic_search_grey_600_24dp); leftDrawable.setBounds(0, 0, leftDrawable.getMinimumWidth(), leftDrawable.getMinimumHeight()); licheng.setCompoundDrawables(leftDrawable, null, rightDrawable, null); } } });
主要使用的是afterTextChanged方法,在文本框中文本变化之后,当输入内容为空时,设置button为GONE即不显示,同时不显示文本框中搜索图片;当输入内容不为空时,设置button为VISIBLE即显示,同时显示搜索图片和×号。
setOnTouchListener
是对某一个控件某一个View是否点击的监控器,一般用于判断某控件是否被点击,想要监控控件是否被点击需要实现:onTouch()方法。这里用来判断文本框中的×号是否被点击,如果点击了,则文本框中的内容设置为空。
licheng.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Drawable drawable = licheng.getCompoundDrawables()[2]; //如果右边没有图片,不再处理 if (drawable == null) return false; //如果不是按下事件,不再处理 if (event.getAction() != MotionEvent.ACTION_UP) return false; if (event.getX() > licheng.getWidth() - licheng.getPaddingRight() - drawable.getIntrinsicWidth()){ licheng.setText(""); } return false; } });
首先判断是否×号图片是否存在,若为true,则判断是否为按下事件,若为true,则判断按下区域是否为×号图片所在位置,若为true,则文本框内容为空。
setOnEditorActionListener
是给文本框添加编辑监听事件,需要注意的是 setOnEditorActionListener这个方法,并不是在我们点击EditText的时候触发,也不是在我们对EditText进行编辑时触发,而是在我们编辑完之后点击软键盘上的回车(这里为搜索)键才会触发。这里对回车按钮进行监控,若文本框内容为空,点击之后弹出提示,若不为空,进入到下一个activity。
licheng.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { String lc_end=licheng.getText().toString(); if(TextUtils.isEmpty(lc_end)) { Toast.makeText(MainActivity.this, "查询内容不能为空", Toast.LENGTH_SHORT).show(); licheng.requestFocus(); InputMethodManager imm = (InputMethodManager) licheng.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(0, InputMethodManager.SHOW_FORCED); }else{ xlm=sp_xlm.getSelectedItem().toString(); positi=sp_xlm.getSelectedItemPosition(); traData(); } return false; } });
这里提示是用toast来显示的,传递数据用了一个方法。
更多相关文章
- 演化理解 Android 异步加载图片
- Android布局的一些属性和开关、创建log图片
- Android WebView实现选择本地图片拍照功能
- Android Studio App设置TextView文字内容大小颜色
- 很实用的android压缩图片的算法
- 值得学习的博客内容
- android imageView 图片显示方式属性
- Android 为联系人添加图片