如何在单击其他活动时使SearchView失去焦点并崩溃

Pan*_*hal 9 java android searchview

在我的应用程序中,我正在创建一个搜索界面,SearchView当它失去并分别获得焦点时折叠和扩展.然而,失败的焦点只发生在两种情况:

  1. 按下后退按钮时.

  2. SearchView按下旁边的主页图标时.

如果用户不仅点击这两件事,而且点击屏幕上的任何其他东西(例如,任何按钮或屏幕的任何空白部分而没有视图),我希望它失去焦点(并因此崩溃).

Pan*_*hal 9

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

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

就是我提到的答案.