UI-常用组件basic View-EditText
1、EditText文本输入框,相当于html当中<input type="text" />.
代码:<EditText
android:id="@+id/editText1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="请输入数字!!"
>
</EditText>
2、子元素 requestFocus 让某个元素自动获取焦点。
当进入页面时,都没有<requestFocus />时,系统自动把焦点放在第一个子元素上;
3、EditText文本输入框的属性:
❶hint:text为空时显示的文字提示信息。
❷TextColorHint:可以通过TextColorHint 设置提示信息的颜色。
❸digits:允许输入的文字
❹numeric:只能输入数字,有三种值, integer(正整数),singed ,decimal;
❺:ems VS maxLength maxLength可以真正的控制字符个数
限制 EditText 内容的特殊方式1:
editText.addTextChangedListener(new TextWatcher()
EditText 内容的特殊方式2:
editText3.setFilters(new InputFilter[]{
new InputFilter.AllCaps(),
new InputFilter.LengthFilter(10),
new InputFilter(){
@Override
public CharSequence filter(CharSequence source, int start,
int end, Spanned dest, int dstart, int dend) {
return null;
}
}
});
特殊方式1和2的小案例:
(其中方式1:editText2和editText3;方式2:editText1)
代码:
main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <EditText android:id="@+id/editText1" android:layout_width="168dp" android:layout_height="50dp" android:ems="10" android:maxLength="10" android:singleLine="true" android:hint="请输入数字!!" > <requestFocus /> </EditText> <EditText android:id="@+id/editText2" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:maxLength="10" android:singleLine="true" android:hint="请输入汉字!!" android:numeric="integer" android:textColorHint="#ff0000" android:layout_below="@id/editText1"/> <EditText android:id="@+id/editText3" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:maxLength="10" android:singleLine="true" android:digits="1234abcd.+" android:layout_below="@id/editText2" /> </LinearLayout>
Test_edittextActivity.java:
package test.edittext; import android.app.Activity; import android.os.Bundle; import android.text.Editable; import android.text.InputFilter; import android.text.Spanned; import android.text.TextWatcher; import android.widget.EditText; import android.widget.Toast; public class Test_edittextActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); EditText editText1=(EditText)findViewById(R.id.editText1); EditText editText2=(EditText)findViewById(R.id.editText2); EditText editText3=(EditText)findViewById(R.id.editText3); editText1.setFilters(new InputFilter[]{ new InputFilter.LengthFilter(5),//对长度进行过滤,只能输入5个 new InputFilter.AllCaps(),//输入的小写字母都会变成大写字母 new InputFilter(){ public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { //source当前输入的字符 //dest是之前输入的字符 //以上参数可以通过断点来检测 //可以将当前输入的转化成中文 if("1".equals(source.toString())){ return "一"; }else if("2".equals(source.toString())){ return "二"; }else{ return null; } } } }); editText2.addTextChangedListener(new TextWatcher(){ public void afterTextChanged(Editable s) {//修改文本之后 String string = s.toString(); //s输入什么就在显示框中弹出什么内容 Toast.makeText(getApplicationContext(), string, 1).show(); } public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { } public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { } }); editText3.addTextChangedListener(new TextWatcher(){ public void afterTextChanged(Editable s) {//修改文本之后 String string = s.toString(); if(string.indexOf("4")!=-1){//不能输入4,如果输入4就弹出提示框,并且清空 s.clear(); Toast.makeText(getApplicationContext(), "不能输入4", 1).show(); } } public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { // 修改文本之前 } public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { } }); } }
运行结果:
没有输入前的界面↓: 输入第一个文本框1a2b3↓:
输入第二个文本框1234时↓: 输入第三个文本框1234时↓: