zoukankan      html  css  js  c++  java
  • Android 处理含有EditText的Activity虚拟键盘

    在Android的Activity放置EditText之后,如果没有做特别的调整,每次一进入Activity,EditText都会自动取得焦点,然后弹出虚拟键盘,造成画面变得拥挤。虽然Android这样的设计是为了减少使用者点击萤幕的次数,但是并不是在所有情况下一进入Activity都需要自动弹出虚拟键盘,使用者可能只是要看资料而已(例如看聊天讯息)。

    进入含有EditText的Activity时,不自动弹出虚拟键盘

    解决一进入Activity就自动弹出虚拟键盘
    只要在Activity的onCreate阶段,加上以下程式码即可。

    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

    或是在AndroidManifest.xml中,设定Activity的android:windowSoftInputMode属性,如下:

    <activity
    android:name="org.magiclen.TestActivity"
    android:label="@string/app_name"
    android:windowSoftInputMode="stateHidden" />

    设定windowSoftInputMode属性为State Hidden之后,进入Activity时,EditText依然会取得焦点,但不会立刻弹出虚拟键盘,还要再点击一次EditText才会弹出键盘。问题成功解决了!

    解决一弹出Dialog又再自动弹出虚拟键盘
    Dialog中若有EditText,也会遇到和Activity一样,在出现Dialog的同时又再自动弹出虚拟键盘的状况。解决方法跟Activity相同,取得Dialog的Window后,使用setSoftInputMode方法来设定隐藏键盘,程式码如下:

    AlertDialog dialog = new AlertDialog.Builder(this).setView(editText).create();
    dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
    dialog.show();
     

    Android中点击空白处隐藏软键盘 

    InputMethodManager imm= (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);   
    @Override  
        public boolean onTouchEvent(MotionEvent event) {  
            // TODO Auto-generated method stub  
            if (event.getAction() == MotionEvent.ACTION_DOWN) {  
                System.out.println("down");  
                if (RegisterActivity.this.getCurrentFocus() != null) {  
                    if (RegisterActivity.this.getCurrentFocus().getWindowToken() != null) {  
                        imm.hideSoftInputFromWindow(RegisterActivity.this.getCurrentFocus().getWindowToken(),  
                                InputMethodManager.HIDE_NOT_ALWAYS);  
                    }  
                }  
            }  
            return super.onTouchEvent(event);  
        }  
  • 相关阅读:
    Java基础之StringBuffer和StringBuilder的区别
    ElasticSearch初体验之使用
    oracle基础之游标的理解与使用
    Java基础之创建实例化对象的方式
    vue.$nextTick实现原理
    vue3双向数据绑定原理_demo
    css实现水平-垂直居中的方法
    中文数组转为数字
    props&attrs provide inject
    vue2和vue3比较
  • 原文地址:https://www.cnblogs.com/niray/p/4089609.html
Copyright © 2011-2022 走看看