关于键盘隐藏的问题
2015-11-22 16:24
375 查看
点击其他位置时 , 软键盘消失
这个属性为top可以将光标置于左上角(当EditText设为全屏时)
android:background=”@null”
这个属性为null可以将输入的框线去掉
android:textCursorDrawable=”@drawable/ic_launcher”
这个属性可以设置光标为drawable样式(可以为一张图片)
android:editable=”false”
这个属性为false,则EditText不可编辑。注意是仅仅不能进行输入,但是EditText的滚动什么的还是可以响应的。
android:enabled=”false”
这个属性为false,则EditText也是不可编辑。注意不仅不可编辑,连滚动什么的都不可以响应,所以可以说是直接让EditText不可用。
android:cursorVisible=”false“
这个属性为false,则EditText的光标不可见。
android:focusableInTouchMode=”false”
这个是属性为false ,则EditText 不相依触摸模式的焦点 , 或者说触摸事件不可用 .
3.
监听EditText的输入
可以使用TextWatcher来监听EditText的输入。使用方法如下:
不自动弹出输入法的键盘
(1)方法一
经过测验,如果EditText和TextView在一起的话,那么输入法就不会自动弹出。这是由于TextView本身的特性导致的。顺便说一句,EditText本身就是继承自TextView的。
因此,你可以放一个TextView到你的布局中,来防止自动弹出输入法。
(2)方法二
还可以利用代码动态设定不弹出输入法。只需要在合适的地方,写下下面的代码即可。下面的代码就是让EditText默认不显示软键盘,只有当被点击的时候才会显示出软键盘
@Override public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { View v = getCurrentFocus(); if (isShouldHideInput(v, ev)) { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); if (imm != null) { imm.hideSoftInputFromWindow(v.getWindowToken(), 0); } } return super.dispatchTouchEvent(ev); } // 必不可少,否则所有的组件都不会有TouchEvent了 if (getWindow().superDispatchTouchEvent(ev)) { return true; } return onTouchEvent(ev); } /** 判断是否需要隐藏键盘 */ public boolean isShouldHideInput(View v, MotionEvent event) { if (v != null && (v instanceof EditText)) { int[] leftTop = { 0, 0 }; // 获取输入框当前的location位置 v.getLocationInWindow(leftTop); int left = leftTop[0]; int top = leftTop[1]; int bottom = top + v.getHeight(); int right = left + v.getWidth(); if (event.getX() > left && event.getX() < right && event.getY() > top && event.getY() < bottom) { // 点击的是输入框区域,保留点击EditText的事件 return false; } else { return true; } } return false; }
几个属性的介绍
android:gravity=”top”这个属性为top可以将光标置于左上角(当EditText设为全屏时)
android:background=”@null”
这个属性为null可以将输入的框线去掉
android:textCursorDrawable=”@drawable/ic_launcher”
这个属性可以设置光标为drawable样式(可以为一张图片)
android:editable=”false”
这个属性为false,则EditText不可编辑。注意是仅仅不能进行输入,但是EditText的滚动什么的还是可以响应的。
android:enabled=”false”
这个属性为false,则EditText也是不可编辑。注意不仅不可编辑,连滚动什么的都不可以响应,所以可以说是直接让EditText不可用。
android:cursorVisible=”false“
这个属性为false,则EditText的光标不可见。
android:focusableInTouchMode=”false”
这个是属性为false ,则EditText 不相依触摸模式的焦点 , 或者说触摸事件不可用 .
3.
监听EditText的输入
可以使用TextWatcher来监听EditText的输入。使用方法如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 Et.addTextChangedListener(new TextWatcher() { //S:变化后的所有字符;start:字符起始的位置;before: 变化之前的总字节数;count:变化后的字节数 public void onTextChanged(CharSequence s, int start, int before, int count) { } //s:变化前的所有字符; start:字符开始的位置; count:变化前的总字节数;after:变化后的字节数 public void beforeTextChanged(CharSequence s, int start, int count, int after) { } //s:变化后的所有字符 public void afterTextChanged(Editable s) { } });
不自动弹出输入法的键盘
(1)方法一
经过测验,如果EditText和TextView在一起的话,那么输入法就不会自动弹出。这是由于TextView本身的特性导致的。顺便说一句,EditText本身就是继承自TextView的。
因此,你可以放一个TextView到你的布局中,来防止自动弹出输入法。
(2)方法二
还可以利用代码动态设定不弹出输入法。只需要在合适的地方,写下下面的代码即可。下面的代码就是让EditText默认不显示软键盘,只有当被点击的时候才会显示出软键盘
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE | WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
设置EditText显示样式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 android:inputType参数类型说明 android:inputType="none"--输入普通字符 android:inputType="text"--输入普通字符 android:inputType="textCapCharacters"--输入普通字符 android:inputType="textCapWords"--单词首字母大小 android:inputType="textCapSentences"--仅第一个字母大小 android:inputType="textAutoCorrect"--前两个自动完成 android:inputType="textAutoComplete"--前两个自动完成 android:inputType="textMultiLine"--多行输入 android:inputType="textImeMultiLine"--输入法多行(不一定支持) android:inputType="textNoSuggestions"--不提示 android:inputType="textUri"--URI格式 android:inputType="textEmailAddress"--电子邮件地址格式 android:inputType="textEmailSubject"--邮件主题格式 android:inputType="textShortMessage"--短消息格式 android:inputType="textLongMessage"--长消息格式 android:inputType="textPersonName"--人名格式 android:inputType="textPostalAddress"--邮政格式 android:inputType="textPassword"--密码格式 android:inputType="textVisiblePassword"--密码可见格式 android:inputType="textWebEditText"--作为网页表单的文本格式 android:inputType="textFilter"--文本筛选格式 android:inputType="textPhonetic"--拼音输入格式 android:inputType="number"--数字格式 android:inputType="numberSigned"--有符号数字格式 android:inputType="numberDecimal"--可以带小数点的浮点格式 android:inputType="phone"--拨号键盘 android:inputType="datetime" android:inputType="date"--日期键盘 android:inputType="time"--时间键盘
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories