【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)); }
相关文章推荐
- Android结构和Framework启动流程
- Android 批量打包 -- 美团解决方案
- Android 二维码 生成和识别
- Android生成带LOGO图片二维码的方法
- Android-通过自定义ViewPager来高仿土巴兔选择装修风格效果(中间放大效果)
- Android Studio系列教程六--Gradle多渠道打包
- Cause: org/gradle/api/publication/maven/internal/DefaultMavenFactory
- RobotFramework客户端RIDE完成对Android系统的自动化测试示例
- Android常见尺寸的获取
- Android Service全解(三)之 Foreground Service(怎么让Android程序一直后台运行,像QQ一样不被杀死?)
- Android RecyclerView 使用完全解析 体验艺术般的控件
- Android布局中Layout_weight属性详细介绍
- 处女男学Android(十五)---Android 广播机制之Broadcast Receiver
- 【转载】Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- Android 性能优化之使用MAT分析内存泄露
- Android Studio(十二):打包多个发布渠道的apk文件
- Android Studio(十二):打包多个发布渠道的apk文件
- Android数据库升级、降级、创建(onCreate() onUpgrade() onDowngrade())的注意点
- 百度地图覆盖物功能
- 【转载】Android事件分发机制完全解析,带你从源码的角度彻底理解(上)