您的位置:首页 > 移动开发 > Android开发

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

2015-09-28 17:16 399 查看

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));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: