• 【android】开发笔记系列:行为篇


    1:键盘遮挡了输入框

    在androidManifest.xml里,对应的activity里设置键盘模式

     <activity
                android:name="活动名称"
                android:windowSoftInputMode="adjustPan">


    2:改变输入框回车键为“下一个”

    前提:需要设置EditText为单行模式android:singleLine="true",否则回车键默认就是换行的。

    在EditText的xml布局文件

    android:imeOptions="actionNext"

    或者后台代码

    EditText对象.setImeOptions(EditorInfo.IME_ACTION_NEXT); 

    在一堆输入框中,最后一个输入框我们一般都希望为“完成”,即点击之后隐藏输入框

    同理:在xml我们需要设置为

     android:imeOptions="actionDone"

    后台代码

    EditText对象.setImeOptions(EditorInfo.IME_ACTION_DONE);

     隐藏/显示软键盘

    如果遇到弹不出键盘,可能是对应的窗体(activity刚展示,alertdialog刚弹出)还未初始化完成,这时候,只要延迟执行若干毫秒就可以了

    new Handler().postDelayed(new Runnable(){    
        public void run() {    
        //execute the task    
        }    
     }, delay);   

    改变输入框光标样式

    在xml里设置

    android:textCursorDrawable

    代码动态设置

    drawable文件

    <shape xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- 圆角,你也可以对不同的角设置不同的数值 -->
        <corners android:radius="1dp"/>
    
        <!-- 形状的填充色 -->
        <solid android:color="@color/orange"/>
        <!-- 光标的宽度 -->
        <size android:width="2dp" />
    </shape>

    调用

    /**
         * 设置输入框的光标样式
         *
         * @param editText
         * @param resourceId
         */
        public static void setCursorDrawable(EditText editText, int resourceId) {
            try {
                Field f = TextView.class.getDeclaredField("mCursorDrawableRes");
                f.setAccessible(true);
                f.set(editText, resourceId);
            } catch (NoSuchFieldException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
    
        }

    隐藏软键盘

    ((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);

    显示软键盘,控件ID可以是EditText,TextView

    ((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).showSoftInput(控件对象, 0);

     去掉默认的下拉效果

    android:overScrollMode="never"

    检测Emoj表情图片

    /**
         * 检测是否有emoji表情
         *
         * @param source
         * @return
         */
        public static boolean containsEmoji(String source) {
            int len = source.length();
            for (int i = 0; i < len; i++) {
                char codePoint = source.charAt(i);
                if (!isEmojiCharacter(codePoint)) { //如果不能匹配,则该字符是Emoji表情
                    return true;
                }
            }
            return false;
        }
    
        /**
         * 判断是否是Emoji
         *
         * @param codePoint 比较的单个字符
         * @return
         */
        private static boolean isEmojiCharacter(char codePoint) {
            return (codePoint == 0x0) || (codePoint == 0x9) || (codePoint == 0xA) ||
                    (codePoint == 0xD) || ((codePoint >= 0x20) && (codePoint <= 0xD7FF)) ||
                    ((codePoint >= 0xE000) && (codePoint <= 0xFFFD)) || ((codePoint >= 0x10000)
                    && (codePoint <= 0x10FFFF));
        }
  • 相关阅读:
    gitlab修改root管理员密码
    【树形 DP】AcWing 325. 计算机
    【图论】AcWing 369. 北大ACM队的远足(DAG 必须边 + 双指针)
    【数据结构】子序列自动机
    前端登录,这一篇就够了(Cookie, Session, Token)
    如何实现一个让面试官惊艳的深克隆
    数据分析前端正则🚀TOP10, 必用⭐正则(77条)
    阿里云ECS安装Archlinux
    golang 哪些类型可以作为map key
    Oracle DG hw重启操作
  • 原文地址:https://www.cnblogs.com/kimmy/p/4844498.html
Copyright © 2020-2023  润新知