隐藏键盘密码字段 Android

发布于 2024-11-01 11:18:00 字数 1392 浏览 0 评论 0原文

我的自定义对话框中有 2 个编辑字段,它们是从 ACtivity 调用的,其中 1 个是“trxtPassword”,其他是“文本”类型。键盘不会出现在“文本”类型的编辑框中,而只会出现在“textPassword”编辑文本中,然后就不会出现。

我尝试了以下方法,但没有任何效果:

    InputMethodManager inputManager = (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE);   
inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 

            //inputManager.hideSoftInputFromWindow(txt_username.getWindowToken(), 0);       
        //inputManager.hideSoftInputFromWindow(txt_password.getWindowToken(), 0);

如果我制作 txt_password.setInputType(0);那么其他人就很容易看到密码,从而无法使用。

为了实现目标还可以做些什么?我确实在 txt 上捕获了 onLostFocus

txt_password.setOnFocusChangeListener(new View.OnFocusChangeListener() {            
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus == false) {
                 InputMethodManager inputManager = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);    
                 inputManager.hideSoftInputFromWindow(LoginDialog.this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
            }
        }
    });

但不幸的是,一旦输入,如果我单击其他任何地方或任何复选框,那么焦点也不会从 txt_password 字段中丢失。仅当我单击另一个 editText 然后触发 onFocusChange 事件并抛出错误并且应用程序关闭时,该信息才会丢失。

知道如何实现这一点吗?

I have 2 editfields in my Custom Dialog which is called from ACtivity, among them 1 is of "trxtPassword" and other of "text" type. Keyboard doesn't appear in "text" type editbox, but just comes on "textPassword" edittext, and then doesn't go only.

I tried the following, but nothing works:

    InputMethodManager inputManager = (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE);   
inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 

            //inputManager.hideSoftInputFromWindow(txt_username.getWindowToken(), 0);       
        //inputManager.hideSoftInputFromWindow(txt_password.getWindowToken(), 0);

If I make txt_password.setInputType(0); then others can see the password easily, so that can't be used.

What more can be doen to achieve the goal? I did to trap the onLostFocus on txt

txt_password.setOnFocusChangeListener(new View.OnFocusChangeListener() {            
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus == false) {
                 InputMethodManager inputManager = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);    
                 inputManager.hideSoftInputFromWindow(LoginDialog.this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
            }
        }
    });

But unfortunately, once entered, if I click anywhere else or any checkbox, then also the focus is not lost from the txt_password field. That is only lost if I click another editText and then the onFocusChange event is fired and throws error and the application shuts down.

Any idea how to accomplish this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

妞丶爷亲个 2024-11-08 11:18:00

用它来保持键盘在活动启动时隐藏

<activity
    android:name=".views.DrugstoreEditView"
    android:windowSoftInputMode="stateHidden"></activity>

并且有一个有用的答案:点击EditText外部后如何隐藏Android上的软键盘?

Use that to keep keyboard hidden on activity start

<activity
    android:name=".views.DrugstoreEditView"
    android:windowSoftInputMode="stateHidden"></activity>

And there is one usefull answer: How to hide soft keyboard on android after clicking outside EditText?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文