EditText、requestFocus、imeOptions、TextWatcher、setOnEditorActionListener

来源:互联网 发布:网络三剑客官方下载 编辑:程序博客网 时间:2024/05/20 17:09
1. EditText
1) 在XML定义一个EditText控件
2)设置监听 setOnKeyListener,并实现 onKey方法,当用户在按键时便会触发这个事件。
public class MainActivity extends Activity {private TextView m_tv=null;private EditText m_Edit=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);m_Edit=(EditText)findViewById(R.id.edit);m_tv=(TextView)findViewById(R.id.text1);m_Edit.setHint("请输入账号:");  //默认提示/*设置EditText的监听事件*/m_Edit.setOnKeyListener(new EditText.OnKeyListener(){@Overridepublic boolean onKey(View v, int keyCode, KeyEvent event) {m_tv.setText("框中内容是:"+m_Edit.getText().toString());return false;}});}}
android:ems = "10" 设置TextView或者Edittext的宽度为10个字符的宽度。当设置该属性后,控件显示的长度就为10个字符的长度,超出的部分将不显示。
2. 

requestFocus

 

标签用于指定屏幕内的焦点View

例如我们点击tab键或enter键焦点自动进入下一个输入框
用法: 将标签置于Views标签内部    

<EditText id="@+id/text"        android:layout_width="wrap_content"android:layout_height="wrap_content" android:textSize="18sp"       android:id="@+id/username"android:scrollHorizontally="true"android:autoText="false"android:capitalize="none"android:gravity="fill_horizontal"android:textAppearance="?android:attr/textAppearanceMedium"android:inputType="textMultiLine">   <requestFocus /></EditText>

3. 取消EditText自动获取焦点默认行为
在项目中,一进入一个页面, EditText默认就会自动获取焦点。 那么如何取消这个默认行为呢? 
在网上找了好久,有点 监听软键盘事件,有点 调用 clearFouse()方法,但是测试了都没有! xml中也找不到相应的属性可以关闭这个默认行为 
解决之道:在EditText的父级控件中找一个,设置成 

android:focusable="true" android:focusableInTouchMode="true" 

或者在父控件上设置
android:descendantFocusability="blocksDescendants"   让焦点不往下传.

这样,就把EditText默认的行为截断了! 

4.    android:imeOptions="actionSend"

我们经常会看到点击不同的编辑框,输入法软键盘右下角会有不同的图标
点击浏览器网址栏的时候,输入法软键盘右下角会变成“GO”或“前往”
而我们点击Google搜索框,输入法软键盘右下角会变成 放大镜 或者“搜索”
而决定这个图标的变换的参数就是EditText中的 android:imeOptions
android:imeOptions的值有actionGo、 actionSend 、actionSearch、actionDone等,这些意思都很明显

EditText中imeOptions属性使用及设置无效解决


1. 实例1:像QQ一样输入表情图像

 在布局文件中加入一个EditText,一个Button.
<span style="font-family:Microsoft YaHei;">public class MainActivity extends Activity {private EditText editText;private Button button;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);editText = (EditText) this.findViewById(R.id.edittext);button = (Button) this.findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {//取得随机数,从0开始int randomId = 1 + new Random().nextInt(9);try {Field field = R.drawable.class.getDeclaredField("face"+ randomId);int resourceId = Integer.parseInt(field.get(null).toString());// 在android中要显示图片信息,必须使用Bitmap位图的对象来装载Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resourceId);ImageSpan imageSpan = new ImageSpan(MainActivity.this, bitmap);SpannableString spannableString = new SpannableString("face");spannableString.setSpan(imageSpan, 0, 4,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);editText.append(spannableString);} catch (Exception e) {}}});}}}</span>
2. 实例2:在EditText中输入特定的字符,实现校验功能。
1)main.xml
<EditText  android:digits="qwertyuiopasdfghjklzxcvbnm">   限制它输入的必须是digits中的数据。
<EditText android:inputType="number|textCapCharacters"> 限制输入数字
<EditText android:inputType="textEmailAddress">                限制输入Email格式
<EditText android:numeric="decimal|signed">                      限制输入浮点数

android:inputType属性的作用
      

inputType属性的作用

text

字符

textCapCharacters

字母大写

textCapWords

单词首字母大写

textCapSentences

仅第一个字母大写

textAutoCorrecttextAutoComplete

自动完成

textMultiLine

多行输入

textImeMultiLine

输入法多行(如果支持)

textNoSuggestions

不提示

textEmailAddress

Email地址

textEmailSubject

Email主题 

textShortMessage

短信

textLongMessage

长讯息

textPersonName

人名

textPostalAddress

地址

textPassword

密码

textVisiblePassword

可见密码

textWebEditText

作为网页表单的文本

textFilte

文本筛选过滤

textPhonetic

拼音输入

numberSigned

有符号数字格式

numberDecimal

带小数点的浮点格式

phone

电话号码

datetime

时间日期

date

日期

time

时间


2. MainActivity.java
检测EditText有没有输入
<span style="font-family: 'Microsoft YaHei';">button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubString value = editText.getText().toString();if (value == null || value.trim().equals("")) {editText.setError("请输入内容!!");return;}}});</span>

3. EditText 样式
3.1  可以定义它获得焦点时,未获得焦点时的样式,参考:获得焦点及未获得焦点
   android:hint="请输入数据"    //输入默认值
3.2 也可以设置EditText组件的背景,参考:EditText和Button组件样式的制作
效果图:
   

关于EditText的属性,这往篇文章很全:EditText的属性

4. Android TextWatcher监控EditText中的输入内容并限制其输入字符个数

 布局中EditText在android布局中经常用到,对EditText中输入的内容也经常需要进行限制,我们可以通过TextWatcher去观察输入框中输入的内容。

Android:TextWatcher


5. 多个EditText输入框自动切换

输入长度大于2直接跳到下个输入框:  http://www.apkbus.com/forum.php?mod=viewthread&tid=124959

6. 更改EditText光标颜色

edittext特殊的一些属性小记

1.dayText3.setInputType(InputType.TYPE_NULL);    不让edittext按enter键后,弹出输入框

2.在使用EditText的XML 文件中加入一个属性:

android:textCursorDrawable="@null"

android:textCursorDrawable 这个属性是用来控制光标颜色的,"@null" 是作用是让光标颜色和text color一样

android:textCursorDrawable 的用法可以查看android sdk

3.如何隐藏edittext闪烁光标

  在EditText控件的xml中添加这个属性就行了 --> android:cursorVisible="false"

4.需要在EditText输入的时候左起位置和自动换行后每行的左起位置都能空出10dp

   android:paddingLeft="10dip"

7、setOnEditorActionListener

Android软件开发之EditText 详解(八)

Android EditText的设置






0 0