单击编辑文本外部时如何隐藏键盘?

发布于 2024-12-09 15:27:30 字数 202 浏览 0 评论 0原文

我有带有 editText 的自定义 listview ,并在点击 edittext 时编辑 edittext 数据,并帮助显示键盘正在工作美好的 。

我的问题是,当我在 edittext 外部单击时,键盘必须隐藏。

谢谢...

i have custom listview with editText and edit the edittext data on tapping edittext with help of showing keypad it is working fine .

my problem is when i click outside of edittext the keypad must hide.

thanks...

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

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

发布评论

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

评论(4

旧话新听 2024-12-16 15:27:30

为此,您必须在布局文件的父布局上获取 onTouchListener。在 TouchListener 上,您必须编写代码以在单击 EditText 外部时隐藏键盘。请遵循 XML 布局和 Java 类来解决此问题,请遵循以下网址。

http://amitthaperandroidquery.blogspot.com/2011/10 /remove-keyboard-after-click-outside.html

For this you have to take the onTouchListener on the parent layout of the Layout File. on the TouchListener you have to code to hide the Keyboard when click outside the EditText. Please follow XML Layout and Java class to resolve this issue please follow following url.

http://amitthaperandroidquery.blogspot.com/2011/10/remove-keyboard-after-click-outside.html

岁月苍老的讽刺 2024-12-16 15:27:30

一种方法是您可以为 EditText 设置焦点更改侦听器。
当小部件失去焦点时,您可以通过以下方式隐藏键盘:-

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

One way is that you can set a focus change listener to the EditText.
When the widget loses focus you can hide the Keyborad by:-

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
千と千尋 2024-12-16 15:27:30

您可以通过执行以下步骤来实现此目的:

  1. 通过添加以下属性使父视图(活动的内容视图)可点击且可聚焦

     android:clickable="true" 
        android:focusableInTouchMode="true" 
    
  2. 实现 hideKeyboard() 方法

     public void hideKeyboard(View view) {
            InputMethodManager inputMethodManager =(InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE);
            inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
        }
    
  3. 最后,设置 edittext 的 onFocusChangeListener。

     edittext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @覆盖
            公共无效onFocusChange(视图v,布尔hasFocus){
                如果(!hasFocus){
                    隐藏键盘(v);
                }
            }
        });
    

来自此来源

You can achieve this by doing the following steps:

  1. Make the parent view(content view of your activity) clickable and focusable by adding the following attributes

        android:clickable="true" 
        android:focusableInTouchMode="true" 
    
  2. Implement a hideKeyboard() method

        public void hideKeyboard(View view) {
            InputMethodManager inputMethodManager =(InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE);
            inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
        }
    
  3. Lastly, set the onFocusChangeListener of your edittext.

        edittext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (!hasFocus) {
                    hideKeyboard(v);
                }
            }
        });
    

From This source

私野 2024-12-16 15:27:30

与接受的答案类似的另一种方法是子类化布局的根视图并覆盖 OnInterceptTouchEvent,隐藏键盘并返回 false 以允许触摸照常传播。

下面的示例适用于 Xamarin,但很容易移植到 Java:

public class KeyboardHidingScrollView : ScrollView
{
    public KeyboardHidingScrollView (Context context) : base (context)
    {
    }

    public KeyboardHidingScrollView (Context context, IAttributeSet attrs) : base (context, attrs)
    {
    }

    public override bool OnInterceptTouchEvent (Android.Views.MotionEvent ev)
    {
        var methodManager = (InputMethodManager)Context.GetSystemService (Context.InputMethodService);
        methodManager.HideSoftInputFromWindow (WindowToken, HideSoftInputFlags.None);
        return false;
    } 
}

Another way similar to the accepted answer is to subclass the root view of the layout and override OnInterceptTouchEvent, hide the keyboard and return false to allow the touch to propagate as usual.

The example below is for Xamarin but it is easy to port to Java:

public class KeyboardHidingScrollView : ScrollView
{
    public KeyboardHidingScrollView (Context context) : base (context)
    {
    }

    public KeyboardHidingScrollView (Context context, IAttributeSet attrs) : base (context, attrs)
    {
    }

    public override bool OnInterceptTouchEvent (Android.Views.MotionEvent ev)
    {
        var methodManager = (InputMethodManager)Context.GetSystemService (Context.InputMethodService);
        methodManager.HideSoftInputFromWindow (WindowToken, HideSoftInputFlags.None);
        return false;
    } 
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文