开发日记(5) 我们如何让EditText的光标消失呢?
来源:互联网 发布:窗帘定高和定宽算法 编辑:程序博客网 时间:2024/05/17 07:02
很多日子没有分享文章,赶项目呢,3人5项目,好烦啊!
正题,这是分享的,原文章:http://www.cnblogs.com/yejiurui/archive/2013/01/02/2841945.html
在我们的应用中,有时候一进入一个页面, EditText默认就会自动获取焦点。弹出输入法框,用户体验很不好,
那么如何取消这个默认行为呢?
ps:这篇文字是一年前写的,现在有网友再问这个问题,我进行重新编辑--2014.05.07,目前有更好的办法,第一种方法局限性很强,大家可以使用第二种方法
第一种方法:.在网上找了好久,有点监听软键盘事件的方法,有调用 clearFouse()方法,但是测试了都不行!在对应的 xml中也找不到相应的属性可以关闭这个默认行为。
后来研究了一下,在其父控件下,添加如下的属性,就可以完美解决:
android:focusable="true"android:focusableInTouchMode="true"
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:focusable="true" android:focusableInTouchMode="true" > <EditText android:id="@+id/et_enter_msg_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" /> <Button android:id="@+id/sent" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/send" /> </LinearLayout>
第二种方法:直接关闭输入法
private void closeInputMethod() { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); boolean isOpen = imm.isActive(); if (isOpen) { // imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);//没有显示则显示 imm.hideSoftInputFromWindow(mobile_topup_num.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); }}
调用这个方法体就行了,具体if语句里面的几个参数,我就借用一个网友的日志来写把(在此感谢)
1、方法一(如果输入法在窗口上已经显示,则隐藏,反之则显示) InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); 2、方法二(view为接受软键盘输入的视图,SHOW_FORCED表示强制显示) InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(view,InputMethodManager.SHOW_FORCED); [java] view plaincopyimm.hideSoftInputFromWindow(view.getWindowToken(), 0); //强制隐藏键盘 3、调用隐藏系统默认的输入法 ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(WidgetSearchActivity.this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); (WidgetSearchActivity是当前的Activity) 4、获取输入法打开的状态 InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); boolean isOpen=imm.isActive();//isOpen若返回true,则表示输入法打开
希望有帮助!谢谢观看!
0 0
- 开发日记(5) 我们如何让EditText的光标消失呢?
- 如何让光标处于EditText的末尾
- 如何让EditText的光标置于Text的尾部
- [android小技巧]如何让光标处于EditText的末尾
- listview+edittext 光标消失问题
- EditText 不显示光标 光标消失
- 如何让Android下的多行EditText焦点光标默认在第一行
- 如何让Android下的多行EditText焦点光标默认在第一行
- 如何让Android下的多行edittext焦点光标默认在第一行而不是中间 ??
- 如何让Android下的hint多行时EditText焦点光标默认在第一行
- 开发日记(7)如何让一个activity更新application中的数据,返回后更新呢?
- android 设置edittext 不可编辑 光标消失 / 让edittex不首次启动弹出输入法
- EditText中如何让光标在某个位置固定
- EditText 如何定义光标的位置
- 如何把EditText的光标隐藏
- 我们怎样让别人了解我们的sprint呢?
- 如何使我们的网站符合W3C网络标准,让IE8能够正常访问呢?
- 产品经理让你开发一个模块(功能),我们如何做才能降低在交付前的修改量呢
- ftp服務器
- 检验数据库表是否正常
- VS 工程只生成dll不生成lib的解决方案
- iOS-UI-05 导航控制器的使用 UINavigationController
- Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)
- 开发日记(5) 我们如何让EditText的光标消失呢?
- 构建最小的docker registry镜像
- 报错:错误 '800a0e7a' 未找到提供程序
- LeetCode题解——Delete Node in a Linked List
- 10个MySQL性能调优的方法
- Power of Cryptography(POJ--2109
- 关于RAID
- iOS实用代码片段
- hdu 1394 Minimum Inversion Number 求逆序数(树状数组/归并排序/暴力)