EditText、requestFocus、imeOptions、TextWatcher、setOnEditorActionListener
2014-04-22 17:42
393 查看
1. EditText
1) 在XML定义一个EditText控件
2)设置监听 setOnKeyListener,并实现 onKey方法,当用户在按键时便会触发这个事件。
2.
标签用于指定屏幕内的焦点View。
例如我们点击tab键或enter键焦点自动进入下一个输入框
用法: 将标签置于Views标签内部
3. 取消EditText自动获取焦点默认行为
在项目中,一进入一个页面, EditText默认就会自动获取焦点。 那么如何取消这个默认行为呢?
在网上找了好久,有点 监听软键盘事件,有点 调用 clearFouse()方法,但是测试了都没有! xml中也找不到相应的属性可以关闭这个默认行为
解决之道:在EditText的父级控件中找一个,设置成
或者在父控件上设置
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.
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属性的作用
2. MainActivity.java
检测EditText有没有输入
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
[b]Android软件开发之EditText
详解(八)
[/b]
1) 在XML定义一个EditText控件
2)设置监听 setOnKeyListener,并实现 onKey方法,当用户在按键时便会触发这个事件。
public class MainActivity extends Activity { private TextView m_tv=null; private EditText m_Edit=null; @Override protected 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(){ @Override public 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 | 仅第一个字母大写 |
textAutoCorrect、textAutoComplete | 自动完成 |
textMultiLine | 多行输入 |
textImeMultiLine | 输入法多行(如果支持) |
textNoSuggestions | 不提示 |
textEmailAddress | Email地址 |
textEmailSubject | Email主题 |
textShortMessage | 短信 |
textLongMessage | 长讯息 |
textPersonName | 人名 |
textPostalAddress | 地址 |
textPassword | 密码 |
textVisiblePassword | 可见密码 |
textWebEditText | 作为网页表单的文本 |
textFilte | 文本筛选过滤 |
textPhonetic | 拼音输入 |
numberSigned | 有符号数字格式 |
numberDecimal | 带小数点的浮点格式 |
phone | 电话号码 |
datetime | 时间日期 |
date | 日期 |
time | 时间 |
检测EditText有没有输入
<span style="font-family: 'Microsoft YaHei';">button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String 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
[b]Android软件开发之EditText
详解(八)
[/b]
Android EditText的设置
相关文章推荐
- 控件EditText的setOnEditorActionListener方法的使用
- Android 控件EditText的setOnEditorActionListener方法的理解
- 控件EditText的setOnEditorActionListener方法的理解
- editText.setOnEditorActionListener
- (转)控件EditText的setOnEditorActionListener方法的理解
- EditText监听事件setOnEditorActionListener onEditorAction执行两次
- android控件EditText的setOnEditorActionListener方法理解
- Android EditText中的setOnEditorActionListener方法的理解
- 控件EditText的setOnEditorActionListener方法的理解
- 控件EditText的setOnEditorActionListener方法的理解
- Android EditText setOnClickListener事件 只有获取焦点才能响应 采用setOnTouchListener解决
- EditText中onEditorAction监听事件执行两次
- TextView不能响应setOnTouchListener ACTION_DOWN的解决方法
- 三星手机上,setOnEditorActionListener软键盘监听回车无效,解决方案
- Android EditText setOnClickListener事件 只有获取焦点才能响应 采用setOnTouchListener解决
- Android EditText setOnClickListener事件 只有获取焦点才能响应 采用setOnTouchListener解决
- edittext的setOnKeyListener里面的方法响应两次的原因和解决方法
- OnEditorActionListener与TextWatcher 的使用
- EditText addTextChangedListener 重复执行了TextWatcher
- EditText listener , textwatcher