• EditText的一些使用技巧


    1.让EditText不自动获取焦点

    将EditText的某个父级控件设置成

    android:focusable="true"
    android:focusableInTouchMode="true"

    2.改变软键盘右下角确认键

    设置EditText控件的imeOptions属性

    <EditText  
            android:id="@+id/edittext"  
            android:layout_width="match_parent"  
            android:layout_height="wrap_content"  
            android:singleLine="true"  
            android:imeOptions="actionSearch"/>  
    actionNone : 回车键,按下后光标到下一行
    actionGo : Go,
    actionSearch : 放大镜
    actionSend : Send
    actionNext : Next
    actionDone : Done,确定/完成,隐藏软键盘,即使不是最后一个文本输入框
     
    有时发现设置了,但是却并没有改变。并不是上面的属型无效,而是还需要将singleLine设置为true
    当设置 actionSend  或 actionSearch 等属性时,可在代码中添加相关操作
    commentEdit.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if(actionId == EditorInfo.IME_ACTION_SEND){
                commentArticle();
                return true;
            }
            return false;
        }
    });

    3.能获取焦点,能编辑,但是不允许弹出软键盘

    采用反射设置

        private void setHideSoftInput() {
            getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
            try {
                Class<EditText> cls = EditText.class;
                Method setSoftInputShownOnFocus;
                setSoftInputShownOnFocus = cls.getMethod("setShowSoftInputOnFocus", boolean.class);
                setSoftInputShownOnFocus.setAccessible(true);
                setSoftInputShownOnFocus.invoke(numberEt, false);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    4.动态设置EditText的输入类型

    数值型

    etValue.setRawInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_NORMAL);

    文本型

    etValue.setRawInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PERSON_NAME);

    5.能获取焦点,不能编辑

    给EditText设置下面的InputFilter

            InputFilter filter = new InputFilter() {     
                @Override
                public CharSequence filter(CharSequence source, int start, int end,
                        Spanned dest, int dstart, int dend) {
                    return null;
                }     
            };
  • 相关阅读:
    高精度入门(减法、加法、乘法)之 CODE[VS] 3115、3116、3117
    DP经典 之 CODE[VS] 1576 最长严格上升子序列 (O(n^2) 和 O(nlogn))
    CODE[VS] 1098 均分纸牌 ( 2002年NOIP全国联赛提高组)
    C++ string 与 int 等类型 的相互转换
    组合数学 + 大数乘法 + 大数除法 之 hdu 1261 字串数
    自然语言理解 之 统计词频
    Leetcode_10【正则表达式匹配】
    01——字符串反转
    Leetcode_09【回文数】
    Leetcode_07【整数反转】
  • 原文地址:https://www.cnblogs.com/wenhui92/p/6242522.html
Copyright © 2020-2023  润新知