美文网首页
EditText不常用的属性简介

EditText不常用的属性简介

作者: 莫比乌丝环丶 | 来源:发表于2016-10-09 17:31 被阅读79次

    刚刚结束的项目中,被客户的产品经理虐的体无完肤... 不过也对EditText中的属性有了更深入的了解。-.-


    不瞎扯,直接进入正题。

    EditText属性:


    1. android:digis=""// 规定输入内容,由此属性引发的血案,下面重讲!!!

    2. android:inputType=""//属性值有:textCapCharacters (网上说是字母大写然而并没什么用,关于小写转大写下面会讲到喔~)

    3 android:textCursorDrawable=""//编辑框光标颜色设置    不要直接设置颜色,需要在drawable文件下画,然后引用。有些时候,你会发现你的EditText没有光标了,不要着急,这个错误我已经在你之前犯过了。T_T  ,原因可能是你把主题的颜色设置为透明的或者白色了

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

    5.android:lineSpacingExtra=""//设置行间距。(同TextView)

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


    还有其他的一些属性,我在项目中没有遇到过。不提了...嘿嘿...  下面着重说下大小写引发的血案。项目中遇到输入车牌客户那边要求输入数字字母组合,且字母自动大写。

    因为牵扯到输入限制所以调用了上面的 digits属性。因为要字母的输出都是大写所以就写了

    android:digits="0123456789abcdefghijklmnopqrstuvwxyz"

    然后将小写转大写:

    第一种方法:


    /**
    * 限制键盘只输入大写字母
    */
    public class AllCapTransformationMethod extends ReplacementTransformationMethod {
    @Override
    protected char[] getOriginal() {
    char[] aa = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z' };

    return aa;
    }

    @Override
    protected char[] getReplacement() {
    char[] cc = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z' };
    return cc;
    }
    }

    然后调用

    etCarCard.setTransformationMethod(new AllCapTransformationMethod());

    此方法虽然你在界面上看起来是大写的,但实际不是你需要的,你还需要拿到字符串然后调用String.toUpperCase();这时候才是真正的大写。

    第二种方法:

    etCarCard.addTextChangedListener(new TextWatcher()
    {
    int index = 0;
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count)
    {
    // TODO Auto-generated method stub
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
    int after)
    {
    // TODO Auto-generated method stub
    }

    @Override
    public void afterTextChanged(Editable s)
    {
    // TODO Auto-generated method stub
    etCarCard.removeTextChangedListener(this);//解除文字改变事件
    index = etCarCard.getSelectionStart();//获取光标位置
    etCarCard.setText(s.toString().toUpperCase());//转换
    etCarCard.setSelection(index);//重新设置光标位置
    etCarCard.addTextChangedListener(this);//重新绑定事件

    }
    });

    项目中采用的是第一种。

    好了 ,兴致勃勃的感觉搞定了,然后打包给客户,他说按下键盘大写的按钮后不能输入了。当时有点方的T_T,最开始觉得吧可能是这两种方法的问题,加了这两个任一,可能系统只限制了小写有效(这时候,我觉得自己发现了一个系统BUG,TMDSJBWY...  后面很确定那是自己的妄想症犯了)。看了很多文章,甚至都翻了源码,最后还是不行。最后设置布局文件里其他属性的时候看到了这一条

    android:digits="0123456789abcdefghijklmnopqrstuvwxyz"

    于是我就加了

    android:digits="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

    试了一下,结果就行了。于是这个坑爹的问题也就解决了。本来当初是想加大写的,但觉得要求是让大写转小写自动转换大写。所以就...总而言之,还是自己害了自己,希望大家不要犯了类似的错误。不过,经过这次也发现了Edittext中有些属性并没什么卵用。

    相关文章

      网友评论

          本文标题:EditText不常用的属性简介

          本文链接:https://www.haomeiwen.com/subject/fmxmyttx.html