Android: EditText设置属性和设置输入规则

1.EditText输入限制规则

在xml:EditText 设置属性

android:digits="ABCDE123&*"

ABCDE123&*是你的限制规则

例如:android:digits="0123456789abc"

规则是只能输入英文字母(小写)abc和数字

2.EditTex输入的文字为密码形式

(1)在xml中设置

android:password="true" //以"."形式显示文本

(2)在代码里设置

通过设置EditTex的setTransformationMethod()方法来实现隐藏密码和显示密码

editText.setTransformationMethod(PasswordTransformationMethod.getInstance());

//设置密码不可见

3.EditTex输入的文字为电话号码

android:phoneNumber="true"//输入电话号码

4.EditTex字数限制

(1)在xml中设置

android:maxLength="50"

(2)在代码中设置

editText.setFilters(new InputFilter[]{newInputFilter.LengthFilter(100)});

5.EditTex是否可编辑

android:editable="true"//可编辑,false不可编辑

6.在EditText中软键盘的调起、关闭

(1)EditTex有焦点(focusable为true)阻止输入法弹出

editText.setOnTouchListener(new OnTouchListener(){

public boolean onTouch(View view,MotionEvent event){

editText.setInputType(Input.TYPE_NULL);//关闭软键盘

return false;

}});

(2)EditText无焦点(focusable=false)时阻挡输入法弹出

InputMethodManager imm=(InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);

imm.hideSoftInputFromWindow(editText.getWindowToken(),0);

(3)调用数字键盘并设置输入类型和键盘为英文

editText.setInputType(InputType.TYPE_CLASS_NUMBER);//调用数字键盘

editText.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);//英文

(4)键盘永远不会弹出

android:focusable="false"// 键盘永不弹出

7.软键盘的调起导致原来的界面被挤上去,或者导致界面下面的tab导航被挤上去,解决方法如下

使用Mainfest中的Activity的android:windowSfotInputMdoe的“adjustPan"属性

另外注意:有关软键盘的问题可参考android:windowSoftInputMode中的属性,下面可防止toolbar与EditText共用出现的toolBar拉伸现象。

android:windowSoftInputMode="stateVisible|adjustPan|stateHidden" 

8.光标详解

editText.requestFocusFromTouch();//让光标放入到点击位置

editText.requestFocus();//默认方式获得焦点

editText editor=(EditText)getCurrentView();//光标插入

int cursor=editor.getSelectionStart();//光标插入

editor.getText().inset(cursor,delta);

Android EditText 属性汇总

android:layout_gravity="center_vertical" 设置控件显示的位置:默认top,这里居中显示,还有bottom android:hint="请输入数字!"

设置显示在空间上的提示信息 android:numeric="integer" 设置只能输入整数,如果是小数则是:

decimal android:singleLine="true" 设置单行输入,一旦设置为true,则文字不会自动换行。

android:password="true" 设置只能输入密码

android:textColor = "#ff8c00" 字体颜色

android:textStyle="bold" 字体,bold, italic, bolditalic android:textSize="20dip" 大小

android:capitalize = "characters" 以大写字母写

android:textAlign="center" EditText没有这个属性,但TextView有 android:textColorHighlight="#cccccc" 被选中文字的底色,默认为蓝色

android:textColorHint="#ffff00" 设置提示信息文字的颜色,默认为灰色 android:textScaleX="1.5" 控制字与字之间的间距

android:typeface="monospace" 字型,normal, sans, serif, monospace android:background="@null" 空间背景,这里没有,指透明

android:layout_weight="1" 权重,控制控件之间的地位,在控制控件显示的大小时蛮有用的。

android:textAppearance="?android:attr/textAppearanceLargeInverse" 文字外观,这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。不知道这样理解对不对? 通过EditText的layout xml文件中的相关属性来实现:

1. 密码框属性 android:password="true" 这条可以让EditText显示的内容自动为星号,输入时内容会在1秒内变成*字样。

2. 纯数字 android:numeric="true" 这条可以让输入法自动变为数字输入键盘,同时仅允许0-9的数字输入

3. 仅允许 android:capitalize="cwj1987" 这样仅允许接受输入cwj1987,一般用于密码验证 下面是一些扩展的风格属性

android:editable="false" 设置EditText不可编辑

android:singleLine="true" 强制输入的内容在单行

android:ellipsize="end" 自动隐藏尾部溢出数据,一般用于文字内容过长一行无法全部显示时

 

转载于:https://www.cnblogs.com/chhom/p/4891178.html

你可能感兴趣的:(移动开发)