Android中使EditText失去焦点,edittext禁止弹出键盘

论坛 期权论坛 脚本     
匿名技术用户   2021-1-5 08:50   11   0

在我们的应用中,有时候一进入一个页面, EditText默认就会自动获取焦点。弹出输入法框,用户体验很不好,

那么如何取消这个默认行为呢?

目前有更好的办法,第一种方法局限性很强,大家可以使用第二种方法

第一种方法:

简洁方法:
EditText et_username=(EditText)findViewById(R.id.et_username);
EditText et_password=(EditText)findViewById(R.id.et_password);
et_username.clearFouse()
et_password.clearFouse()


后来研究了一下,在其父控件下,添加如下的属性,就可以完美解决:

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>
复制代码

第二种方法:直接关闭输入法

1
2
3
4
5
6
7
8
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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 plaincopy
imm.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 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP