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