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)); }