EditText

EditText:
    <!--EditText文本编辑框,一般配合输入文本来使用-->

    <EditText
        android:id="@+id/et_content"            //id
        android:layout_width="match_parent"        //宽度
        android:layout_height="wrap_content"        //高度
        android:ellipsize="end"                //设置当文字过长时,该控件该如何显示。有如下值设置:”start”—?省略号显示在开头;”end”——省略号显示在结尾;”middle”—-省略号显示在中间;”marquee” ——以跑马灯的方式显示(动画横向移动)
        android:hint="请输入依赖的名字……"        //设置提示信息
        android:maxLength="10"                //最大输入长度,字母汉字算一个
        android:singleLine="true" />            //设置单行输入,一旦设置为true,则文字不会自动换行。

EditText的常用属性:

EditText继承关系:View-->TextView-->EditText

EditText的属性很多,这里介绍几个:

android:inputType="textPassword"        //键盘类型为密码

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"    //文字外观

android:layout_gravity="center_vertical"    //设置控件显示的位置:默认top,这里居中显示,还有bottom

android:gray="top"                 //多行中指针在第一行第一位置

et.setSelection(et.length());            //调整光标到最后一行

android:autoText                 //自动拼写帮助

android:capitalize                 //首字母大写

android:digits                     //设置只接受某些数字

Android:singleLine                //是否单行或者多行,回车是离开文本框还是文本框增加新行

android:numeric                 //只接受数字

android:phoneNumber                 //输入电话号码

android:editable                 //是否可编辑

android:autoLink=”all”             //设置文本超链接样式当点击网址时,跳向该网址 

android:textAppearance="?android:attr/textAppearanceLargeInverse"    //文字外观,这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。不知道这样理解对不对? 
       
android:autoLink                //设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all)

android:autoText                //如果设置,将自动执行输入值的拼写纠正。此处无效果,在显示输入法并输入的时候起作用。

android:bufferType                //指定getText()方式取得的文本类别。选项editable 类似于StringBuilder可追加字符,也就是说getText后可调用append方法设置文本内容。spannable 则可在给定的字符区域使用样式,参见这里1、这里2。

android:capitalize                //设置英文字母大写类型。此处无效果,需要弹出输入法才能看得到,参见EditView此属性说明。

android:cursorVisible                //设定光标为显示/隐藏,默认显示。

android:digits                    //设置允许输入哪些字符。如“1234567890.+-*/% ()”

代码设置允许输入哪些字符

editText.setKeyListener(DigitsKeyListener.getInstance("0123456789"));

android:drawableBottom                //在text的下方输出一个drawable,如图片。如果指定一个颜色的话会把text的背景设为该颜色,并且同时和background使用时覆盖后者。

android:drawableLeft                //在text的左边输出一个drawable,如图片。

android:drawablePadding                //设置text与drawable(图片)的间隔,与drawableLeft、drawableRight、drawableTop、drawableBottom一起使用,可设置为负数,单独使用没有效果。 

android:drawableRight                //在text的右边输出一个drawable,如图片。

android:drawableTop                //在text的正上方输出一个drawable,如图片。

android:editable                //设置是否可编辑。

android:editorExtras                //设置文本的额外的输入数据。在EditView再讨论。

android:ellipsize                //设置当文字过长时,该控件该如何显示。有如下值设置:”start”—?省略号显示在开头;”end”——省略号显示在结尾;”middle”—-省略号显示在中间;”marquee” ——以跑马灯的方式显示(动画横向移动)

android:freezesText                //设置保存文本的内容以及光标的位置。参见:这里。

android:gravity                    //设置文本位置,如设置成“center”,文本将居中显示。

android:hintText                //为空时显示的文字提示信息,可通过textColorHint设置提示信息的颜色。此属性在EditView中使用,但是这里也可以用。

android:imeOptions                //附加功能,设置右下角IME动作与编辑框相关的动作,如actionDone右下角将显示一个“完成”,需要搭配android:singleLine="true"一起使用才会生效

捕捉imeOptions的功能事件:
etVerificationNum.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if(actionId==EditorInfo.IME_ACTION_DONE){

        }
        return false;
    }
});

设置无效时需要设置以下任意一项

1 将singleLine设置为true

2 将inputType设置为text

详细参考:https://blog.csdn.net/liuweiballack/article/details/46708697

android:imeActionId                //设置IME动作ID。在EditView再做说明,可以先看这篇帖子:这里。

android:imeActionLabel                //设置IME动作标签。在EditView再做说明。

android:includeFontPadding            //设置文本是否包含顶部和底部额外空白,默认为true。

android:inputMethod                //为文本指定输入法,需要完全限定名(完整的包名)。例如:com.google.android.inputmethod.pinyin,但是这里报错找不到。

android:inputType                //设置文本的类型,用于帮助输入法显示合适的键盘类型。在EditView中再详细说明,这里无效果。

android:linksClickable                //设置链接是否点击连接,即使设置了autoLink。

android:marqueeRepeatLimit            //在ellipsize指定marquee的情况下,设置重复滚动的次数,当设置为marquee_forever时表示无限次。

android:ems                    //设置TextView的宽度为N个字符的宽度。这里测试为一个汉字字符宽度,如图:

android:maxEms                    //设置TextView的宽度为最长为N个字符的宽度。与ems同时使用时覆盖ems选项。

android:minEms                    //设置TextView的宽度为最短为N个字符的宽度。与ems同时使用时覆盖ems选项。

android:maxLength                //限制显示的文本长度,超出部分不显示。

android:lines                    //设置文本的行数,设置两行就显示两行,即使第二行没有数据。

android:maxLines                //设置文本的最大显示行数,与width或者layout_width结合使用,超出部分自动换行,超出行数将不显示。

android:minLines                //设置文本的最小行数,与lines类似。

android:lineSpacingExtra            //设置行间距。

android:lineSpacingMultiplier            //设置行间距的倍数。如”1.2”

android:numeric                    //如果被设置,该TextView有一个数字输入法。此处无用,设置后唯一效果是TextView有点击效果,此属性在EdtiView将详细说明。

android:password                //以小点”.”显示文本

android:phoneNumber                //设置为电话号码的输入方式。

android:privateImeOptions            //设置输入法选项,此处无用,在EditText将进一步讨论。

android:scrollHorizontally            //设置文本超出TextView的宽度的情况下,是否出现横拉条。

android:selectAllOnFocus            //如果文本是可选择的,让他获取焦点而不是将光标移动为文本的开始位置或者末尾位置。TextView中设置后无效果。

android:shadowColor                //指定文本阴影的颜色,需要与shadowRadius一起使用。效果:

android:shadowDx                //设置阴影横向坐标开始位置。

android:shadowDy                //设置阴影纵向坐标开始位置。

android:shadowRadius                //设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好。

android:singleLine                //设置单行显示。如果和layout_width一起使用,当文本不能全部显示时,后面用“…”来表示。如android:text="test_ singleLine " android:singleLine="true" android:layout_width="20dp"将只显示“t…”。如果不设置singleLine或者设置为false,文本将自动换行

android:shadowDx                //设置阴影横向坐标开始位置。

android:shadowDy                //设置阴影纵向坐标开始位置。

android:shadowRadius                //设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好。

android:singleLine                //设置单行显示。如果和layout_width一起使用,当文本不能全部显示时,后面用“…”来表示。如android:text="test_ singleLine " android:singleLine="true" android:layout_width="20dp"将只显示“t…”。如果不设置singleLine或者设置为false,文本将自动换行

android:text                    //设置显示文本.

android:textSize                //设置文字大小,推荐度量单位”sp”,如”15sp”

android:textStyle                //设置字形[bold(粗体) 0, italic(斜体) 1, bolditalic(又粗又斜) 2] 可以设置一个或多个,用“|”隔开

android:typeface                //设置文本字体,必须是以下常量值之一:normal 0, sans 1, serif 2, monospace(等宽字体) 3]

android:height                    //设置文本区域的高度,支持度量单位:px(像素)/dp/sp/in/mm(毫米)

android:maxHeight                //设置文本区域的最大高度

android:minHeight                //设置文本区域的最小高度

android:width                    //设置文本区域的宽度,支持度量单位:px(像素)/dp/sp/in/mm(毫米),与layout_width的区别看这里。

android:maxWidth                //设置文本区域的最大宽度

android:minWidth                //设置文本区域的最小宽度

android:textAppearance                //设置文字外观。如“?android:attr/textAppearanceLargeInverse”这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。可设置的值如下:textAppearanceButton/textAppearanceInverse/textAppearanceLarge/textAppearanceLargeInverse/textAppearanceMedium/textAppearanceMediumInverse/textAppearanceSmall/textAppearanceSmallInverse

设置左边图标的边距:

android:paddingStart="12dp"

设置hint内容距离图标的边距:

android:drawablePadding="10dp"

Java类里的EditText方法可向下搜索:

EditText类:

一般配合该控件使用的Java类可向下搜索::TextUtils类

EditText想要让默认输入类型为数字,并且可以切换到其他输入类型:

setRawInputType(InputType.TYPE_CLASS_NUMBER);
不改变输入类型,但首先弹出数字键盘。

设置文本类型:

etVerificationNum.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_VARIATION_PASSWORD);

注意:通过代码给InputType赋值时,不是设置TYPE_XXX_VARIATION_YYY,而是要设置TYPE_CLASS_XXX | TYPE_XXXX_VARAITION_YYY

设置回车符跳转到焦点:

android:nextFocusDown="@id/(下一个控件ID)"

监听文本输入事件:

private EditText mEditText; //声明一个文本编辑框的对象

mEditText = (EditText) findViewById(R.id.et_content);  //把布局文件里的文本编辑框绑定到当前声明的对象

mEditText.addTextChangedListener(new TextWatcher()    //添加文本变化的监听器

这个时候会出现自动生成的3个方法,如果没有出现,则alt+回车用智能提示来创建

这3个方法每一个文本改变的时候都可以调用里面的方法,只是方法里的参数属性各不相同,每一个都代表不同的含义

根据需要进行的操作需要用到哪一些属性,来选择对应的方法:

            /**
             * 文本变化的数量
             * @param s 变化之前的文本内容
             * @param start 变化之前文本的总数量
             * @param count 监听的变化数量 每次都是0
             * @param after 当前一次输入的文本长度
             */
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                //输入前执行该方法(当前录入的单个字节生效之前触发)
            }

            /**
             *
             * @param s 当前输入的文本内容
             * @param start 当前改变文字的位置
             * @param before    监听的变化数量  每次都是0
             * @param count 当前一次输入的文本长度
             */
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                  //输入后执行该方法(当前录入的单个字节生效之后触发)
            }

            /**
             *
             * @param s 当前输入的文本内容
             */
            @Override
            public void afterTextChanged(Editable s) {
                  //输入结束执行该方法
            }

点击完成换行事件:

返回true代表你已经将该点击事件消化掉,不会把点击事件产生的结果返回给edittext,而返回false代表你没有消化掉该点击事件,将返回结果传给edittext,edittext就会换行

et_money.setOnEditorActionListener(new OnEditorActionListener() {
        
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            Log.e("输入完点击确认执行该方法", "输入结束");
            return false;
        }
    });

捕捉imeOptions的完成功能事件:
etVerificationNum.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if(actionId==EditorInfo.IME_ACTION_DONE){

        }
        return false;
    }
});

关闭/打开软键盘:

    /**
     * 关闭/打开键盘
     *
     * @param editText editText
     */
    protected void setSoftInput(EditText editText, Boolean isOpen) {
        if (imm != null && imm.isActive()) {
            if (isOpen) {
                imm.showSoftInput(editText, 0);
            } else {
                imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
            }
        }
    }

//初始化

private InputMethodManager imm;
imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);

用代码设置最大输入长度:

etVerificationNum.setFilters(new InputFilter[]{new InputFilter.LengthFilter(Integer.MAX_VALUE)});

设置光标位置:

editText.setSelection(textValue[0].length());

去除下滑线:

android:background="@null"

如何使edittext点击后全选里面的内容

editText.setSelection(0, length);editText.setSelection(0);editText.setSelectAllOnFocus(true);

焦点监听事件:

editText.setOnFocusChangeListener(new android.view.View.
        OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            // 此处为得到焦点时的处理内容
        } else {
            // 此处为失去焦点时的处理内容
        }
    }
});
    //设置ellipsize为null(可编辑)
    private void setEllipsizeNull(EditText editText) {
        editText.setEllipsize(null);
        editText.setKeyListener(new TextKeyListener(TextKeyListener.Capitalize.NONE, false));
    }

    //设置ellipsize为end(不可编辑,结尾显示...)
    private void setEllipsizeEnd(EditText editText) {
        editText.setKeyListener(null);
        editText.setEllipsize(TextUtils.TruncateAt.END);
    }

让EditText失去默认焦点:

把这两行代码添加至EditText控件的父级控件中,把屏幕焦点设置到父级控件上,EditText就会暂时失去焦点
android:focusable="true" 
android:focusableInTouchMode="true" 

获取焦点: 

etGoodsInput.setFocusable(true);
etGoodsInput.requestFocus();

代码设置密码模式: 

如果不生效,需要同时设置InputType.TYPE_CLASS_TEXT
EditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD)

更改光标颜色:

android:textCursorDrawable="#FFFFFF"

设置下划线颜色:

<style name="MyEditText" parent="Theme.AppCompat.Light"> 
    <item name="colorControlNormal">@color/indigo</item> 
    <item name="colorControlActivated">@color/pink</item>
</style>

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:hint="Hint text" 
    android:theme="@style/MyEditText"/>

禁止输入:

editTextView.setEnabled(false);

监听删除键:

   mEditTextTelNum.setOnKeyListener(new OnKeyListener() {

            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (keyCode == KeyEvent.KEYCODE_DEL) {
                    String content = mEditTextTelNum.getText().toString();
                    int length = content.length();
                    content.endsWith("-");
                }
                return false;
            }
        });

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值