zoukankan      html  css  js  c++  java
  • Activity“ 阻止自动弹出软键盘”的方法 -尤其是对于Tab页下的!

    我的activity是Tab页签下的~!

    所以应把代码加在继承于TabActivity的那个activity中!!而不是由点击Tab页启动的那个activity

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

    又遇到Tab页中有的Activity需要弹出键盘,有的Activity需要隐藏掉的情况,

    这次用的是在Activity中加代码的方法,先看下代码在结束原因吧!

    public class xxxActivity extends Activity {
    
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.input_camera_activity);
    
        }
    
    
        @Override
        protected void onResume() {
            super.onResume();
            HideKeyboard();//隐藏键盘
        }
    
        //隐藏键盘
        private void HideKeyboard() {
            new Timer().schedule(new TimerTask() {
                @Override
                public void run() {
                    InputMethodManager manager = ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE));
                    manager.hideSoftInputFromWindow(
                            InputCameraActivity.this.getCurrentFocus().getWindowToken(),
                            InputMethodManager.HIDE_NOT_ALWAYS
                    );
                }
            }, 10);
        }
    
    }

    这个xxxActivity 是Tab页中的一个Activity,它想要隐藏掉软键盘,

    1.开启线程延时的原因是:如果在Create方法中就直接关闭软键盘会报错,意思是Activity窗口没有初始化完,不可以进行诸如此类的操作。于是延时一小会儿,再执行隐藏软键盘的代码,就可以了。注意,即使不是在Tab相关的Activity中,也是这样!!

    2.写在Resume()中的原因是,Tab页切换时不是从Activity的OnCreate()方法重新执行,所以为保证每次切换到该Activity时都能隐藏掉软键盘,所以要在OnResume()中写。

  • 相关阅读:
    关于C的struct结构的几个常见疑问。
    NAT类型
    Linux oops stack 分析
    关于pci_dev的定义
    还是动态添加控件 触发事件
    页面编译模型
    MDX 销售额与上月比较
    C语言的词法语法分析lex&yacc 经典收藏
    interrupt storm
    js获取mac地址
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/5913199.html
Copyright © 2011-2022 走看看