文档章节

EditText属性及使用

紫韵
 紫韵
发布于 2016/01/29 17:14
字数 1077
阅读 75
收藏 1

EditText常见属性:

属性 功能
android:hint="提示信息" 设置显示在控件上的提示信息
android:numeric="integer" 设置只能显示数字,integer:整数;decimal:小数
android:singleLine="true" 单行输入,设置为true时文字不会自动换行
android:password="true"  设置只能输入密码
android:textColor = "#ff8c00" 字体颜色
android:textStyle="bold" 设置字体,主要有bold, italic
android:capitalize = "characters" 设置英文字母大写类型,sentences仅第一个字母大写,words每一个单词首字母大小,用空格区分单词;characters每一个英文字母都大写。
android:textColorHighlight="#cccccc" 被选中文字的底色,默认为蓝色
android:textColorHint="#ffff00"  设置提示信息文字的颜色,默认为灰色
android:textScaleX="1.5"  控制字与字之间的间距
android:background="@null"  空间背景,这里没有,指透明
android:textAppearance="?android:attr/textAppearanceLargeInverse" 文字外观,这里引用的是系统自带的一个外观,?表示系统是否有这种外观,有则使用,无则不用
android:ellipsize="end" 自动隐藏尾部溢出数据,一般用于文字内容过长一行无法全部显示时

    Enter键图标的设置:

        软键盘的Enter键默认显示的是“完成”,但可以对其进行设置,使其更加符合自己项目的需求。具体为改变android:imeOptions属性,其取值与对应的界面如下:

    android:imeOptions 对应常量 功能
    actionUnspecified EditorInfo.IME_ACTION_UNSPECIFIED
    回车键图标
    actionNone EditorInfo.IME_ACTION_NONE 回车键图标,输入框右侧不带任何提示
    actionGo EditorInfo.IME_ACTION_GO 显示“去往”
    actionSearch EditorInfo.IME_ACTION_SEARCH 显示表示搜索的放大镜图标
    actionSend EditorInfo.IME_ACTION_SEND 显示“发送”
    actionNext EditorInfo.IME_ACTION_NEXT 显示“下一个”
    actionDone EditorInfo.IME_ACTION_DONE 显示“完成”
    flagNoExtractUi
    使软键盘不全屏显示,只占用一部分屏幕

    对intent的默认焦点进行设置

        对intent的默认光标进行设置,使intent的默认光标不在EditText上,从而在进入intent时不至于由于立即打开输入法,影响美观。intent默认将从上至下,从左至右的第一个可以输入控件作为焦点。

        <方法一>

    button.setFocusable(true);
    button.requestFocus();
    button.setFocusableInTouchMode(true);

        <方法二:在EditText前面放置一个看不到的LinearLayout,让他率先获取焦点>

    <LinearLayout 
        android:focusable="true" 
        android:focusableInTouchMode="true" 
        android:layout_width="0px" 
        android:layout_height="0px"/>

    软键盘的设置

        在Android中,软键盘的调起有时会导致原来的界面被挤上去,或者导致界面下面的tab导航被挤上去,这时可以使用Manifest中的Activity的android:windowSoftInputMode的"adjustPan"属性进行设置。

    EditText设置文本的可见性

    if (isHidden) {
    			// 设置EditText文本为可见的
    			et.setTransformationMethod(HideReturnsTransformationMethod
    					.getInstance());
    		} else {
    			// 设置EditText文本为隐藏的
    			et.setTransformationMethod(PasswordTransformationMethod
    					.getInstance());
    		}
    		isHidden = !isHidden;
    		et.postInvalidate(); // 刷新页面
    		// 切换后将EditText光标置于末尾
    		CharSequence charSequence = et.getText();
    		if (charSequence instanceof Spannable) {
    			Spannable spanText = (Spannable) charSequence;
    			Selection.setSelection(spanText, charSequence.length());
    		}

    EditText设置响应用户自己的操作

        通常在用户点击一个EditText时,其默认会先获取焦点,然后第二次点击才会响应用户的操作。所以可以通过屏蔽掉其获取焦点的方法而使得第一次点击便可响应用户自己的操作。

    final InputMethodManager imm = (InputMethodManager) mContext
    				.getSystemService(Context.INPUT_METHOD_SERVICE);
    		et.setOnClickListener(new OnClickListener() {
    
    			@Override
    			public void onClick(View v) {
    				imm.hideSoftInputFromWindow(et.getWindowToken(), 0); // 隐藏软键盘(无焦点时关闭软键盘)
    				et.setInputType(InputType.TYPE_NULL); // 关闭软键盘(有焦点时关闭软键盘)
    				// Do your own business!
    			}
    		});

    EditText设置是否自动弹出键盘

    android:focusable="false"    //键盘永远不会弹出
    <activity android:name=".AddLinkman"android:windowSoftInputMode="adjustUnspecified|stateHidden"/>    //不自动弹出键盘
    InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(etEditText.getWindowToken(), 0);    //关闭键盘(比如输入结束后执行)
    ((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).toggleSoftInput(0,InputMethodManager.HIDE_NOT_ALWAYS);    //自动弹出键盘
    etEditText.requestFocus();    //让EditText获得焦点,但是获得焦点并不会自动弹出键盘

    EditText光标的设置

    et.requestFocusFromTouch(); // 将光标放在点击位置
    et.requestFocus(); // 默认方式获得焦点
    int cursor = et.getSelectionStart(); // 光标插入处
    et.setSelection(et.getText().length()); // 将光标插到文本末尾
    // android:cursorVisible="false" 隐藏光标
    // android:background="#00000000" 不要文本框背景

        以上是我对EditText的一些常用功能、属性的总结,如有理解不当,或是有更多使用技巧,请与我联系,谢谢!


© 著作权归作者所有

紫韵
粉丝 4
博文 21
码字总数 34323
作品 0
武汉
私信 提问
加载中

评论(1)

h
heart162
这里有好多情况可以总结,那些方法并不是在所有手机上都起作用,你可以下个genymotion模拟器来测试各种机型。
然后现在时间够多的话,可以深入研究下,看下源码并且跟踪下源码的调用。我在这方面研究很少,你恰好可以补充补充
增强EditText--TextInputLayout

该控件继承自linearlayout,里边只能包裹一个控件,EditText或继承自EditText, 在用户输入的时候能将原来的提示文字浮动在控件上边。 使用此控件需要引入依赖 下面是简单调用的代码 实现的效...

lanyu96
2018/12/05
0
0
EditText设置ImeOptions无效问题

1、EditText的ImeOptions属性 当我们使用EditText的时候,经常会有改变键盘回车键功能的需求,例如把EditText当做搜索框使用时,就需要把回车键改为搜索键。想要达到这个效果可以通过:设置E...

guiying712
2016/11/30
0
0