Editext功能详解

一.Editext输入框设置强制小写转大写

//设置转换方法,将小写字母转换为大写字母
platePlateUmberEt.setTransformationMethod(new UpperCaseTransform());
   desc   : 将EditText输入的小写字母转换成大写字母
 *     version: 1.0
 * </pre>
 */
public class UpperCaseTransform extends ReplacementTransformationMethod {

    @Override
    protected char[] getOriginal() {
        return new char[]{'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'};
    }

    @Override
    protected char[] getReplacement() {
        return new char[]{'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'};
    }
}
platePlateUmberEt.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        /*在软盘上点击搜索键*/
        if (actionId == EditorInfo.IME_ACTION_SEARCH) {
            //获取输入的内容
            String inputContent = v.getText().toString();
        }
        return true;//返回true,保留软键盘。false,隐藏软键盘
    }
});

说明:需要注意的是 setOnEditorActionListener这个方法,并不是在我们点击EditText的时候触发,也不是在我们对EditText进行编辑时触发,而是在我们编辑完之后点击软键盘上的各种键才会触发。

因为通过布局文件中的imeOptions可以控制软件盘右下角的按钮显示为不同按钮。所以和EditorInfo搭配起来可以实现各种软键盘的功能。

各种属性对应:
imeOptions=”actionUnspecified” –> EditorInfo.IME_ACTION_UNSPECIFIED
imeOptions=”actionNone” –> EditorInfo.IME_ACTION_NONE
imeOptions=”actionGo” –> EditorInfo.IME_ACTION_GO
imeOptions=”actionSearch” –> EditorInfo.IME_ACTION_SEARCH
imeOptions=”actionSend” –> EditorInfo.IME_ACTION_SEND
imeOptions=”actionNext” –> EditorInfo.IME_ACTION_NEXT
imeOptions=”actionDone” –> EditorInfo.IME_ACTION_DONE
 

二.EditText的基本属性

 <EditText
                    android:textIsSelectable="true"     //文本是否可选,复制粘贴剪辑,在TextVew中使用,在EditText中使用此属性将收不到软键盘输入内容
                    android:id="@+id/pop_select_label_et"
                    android:layout_weight="1"
                    android:paddingLeft="25dp"
                    android:background="@drawable/find_num_tv_bg"//@null 取消下划线
                    android:hint="输入话题"
                    android:maxLength="30"
                    android:textColorHint="@color/white"
                    android:textColor="@color/white"
                    android:singleLine="true"
                    android:imeOptions="actionSearch"//软键盘右下方修改为搜索
                    android:layout_width="0dp"
                    android:textCursorDrawable="@drawable/text_view_cursor" //修改光标的颜色
                    android:textSize="15sp"
                    android:cursorVisible="false"//是否显示光标
                    android:focusable="true"//是否可以focu
                    android:layout_height="match_parent"
                    />

2.1imeOption属性

imeOptions值:

actionDone:完成,对应常量EditorInfo.IME_ACTION_DONE
actionSend :发送,对应常量EditorInfo.IME_ACTION_SEND
actionSearch 搜索,对应常量EditorInfo.IME_ACTION_SEARCH
actionGo 去往,对应常量EditorInfo.IME_ACTION_GO
actionNone 没有动作,对应常量EditorInfo.IME_ACTION_NONE
actionUnspecified 未指定,默认,对应常量EditorInfo.IME_ACTION_UNSPECIFIED.
actionNext 下一个,对应常量EditorInfo.IME_ACTION_NEXT


2.2inputType属性

android:inputType="phone" //电话号码
    android:inputType="none" 
    //文本类型,多为大写、小写和数字符号。 
    android:inputType="text"  
    android:inputType="textCapCharacters" //字母大写 
    android:inputType="textCapWords" //首字母大写 
    android:inputType="textCapSentences" //仅第一个字母大写 
    android:inputType="textAutoCorrect" //自动完成 
    android:inputType="textAutoComplete" //自动完成 
    android:inputType="textMultiLine" //多行输入 
    android:inputType="textImeMultiLine" //输入法多行(如果支持) 
    android:inputType="textNoSuggestions" //不提示 
    android:inputType="textUri" //网址 
    android:inputType="textEmailAddress" //电子邮件地址 
    android:inputType="textEmailSubject" //邮件主题 
    android:inputType="textShortMessage" //短讯 
    android:inputType="textLongMessage" //长信息 
    android:inputType="textPersonName" //人名 
    android:inputType="textPostalAddress" //地址
    android:inputType="textPassword" //密码 
    android:inputType="textVisiblePassword" //可见密码
    android:inputType="textWebEditText" //作为网页表单的文本 
    android:inputType="textFilter" //文本筛选过滤 
    android:inputType="textPhonetic" //拼音输入 

    //数值类型 
    android:inputType="number" //数字 
    android:inputType="numberSigned" //带符号数字格式 
    android:inputType="numberDecimal" //带小数点的浮点格式 
    android:inputType="datetime" //时间日期 
    android:inputType="date" //日期键盘 
    android:inputType="time" //时间键盘

 2.3设置imeOption不生效的解决办法

设置imeOption无效:需要将singleLine设置为true或者 将inputType设置为text

2.4修改EditText下划线的颜色

1. 通过修改colorAccent属性来修改下划线颜色,此方法会全局修改
 <item name="colorAccent">@color/colorWhite80</item>
   
2. 通过修改EditText的style来修改下划线颜色
<style name="MyEditText2" parent="Theme.AppCompat.Light">
        <item name="colorControlNormal">@color/colorWhite80</item> //控件默认的颜色
        <item name="colorControlActivated">@color/colorWhite50</item> // 控件被激活的颜色
</style>

3.通过android:theme属性将此样式应用于您的EditText

<EditText 
    android:layout_width="match_parent" 
    android:theme="@style/MyEditText2"/>

参考文章

三.软件盘

3.1设置软键盘模式

 

3.2windowSoftInputMode各值的含义

【A】stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置

【B】stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示

【C】stateHidden:用户选择activity时,软键盘总是被隐藏

【D】stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的

【E】stateVisible:软键盘通常是可见的

【F】stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态

【G】adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示

【H】adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间

【I】adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值