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属性使用及设置无效解决
<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 | 时间 |
2. MainActivity.java
检测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.1 可以定义它获得焦点时,未获得焦点时的样式,参考:获得焦点及未获得焦点
android:hint="请输入数据" //输入默认值
3.2 也可以设置EditText组件的背景,参考:EditText和Button组件样式的制作
效果图:
关于EditText的属性,这往篇文章很全:EditText的属性
4. Android TextWatcher监控EditText中的输入内容并限制其输入字符个数
布局中EditText在android布局中经常用到,对EditText中输入的内容也经常需要进行限制,我们可以通过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的设置