单击 Activity 上的其他位置时如何使 SearchView 失去焦点并折叠

2024-01-10

在我的应用程序中,我正在制作一个搜索界面 http://developer.android.com/training/search/setup.html其中SearchView当它失去焦点和获得焦点时分别会折叠和扩展。然而,失去焦点的情况只发生在两种情况下:

  1. 当按下后退按钮时。

  2. 当主页图标旁边SearchView被按下。

如果用户不仅单击这两个东西,而且单击屏幕上的任何其他位置(例如,任何按钮或屏幕上没有视图的任何空白部分),我希望它失去焦点(从而崩溃)。


好吧,我找到了以下解决方案。我在不是 searchview 实例的每个视图上使用 setOnTouchListener 来折叠 searchview。它对我来说很完美。以下是代码。

public void setupUI(View view) {

    if(!(view instanceof SearchView)) {

        view.setOnTouchListener(new OnTouchListener() {

            public boolean onTouch(View v, MotionEvent event) {
                searchMenuItem.collapseActionView();
                return false;
            }

        });
    }

    //If a layout container, iterate over children and seed recursion.
    if (view instanceof ViewGroup) {

        for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {

            View innerView = ((ViewGroup) view).getChildAt(i);

            setupUI(innerView);
        }
    }
}

This https://stackoverflow.com/a/11656129/820410是我提到的答案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单击 Activity 上的其他位置时如何使 SearchView 失去焦点并折叠 的相关文章

随机推荐