EditText属性及使用

扶醉桌前 提交于 2019-12-05 05:30:53

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的一些常用功能、属性的总结,如有理解不当,或是有更多使用技巧,请与我联系,谢谢!


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!