Android SearchView启动时如何隐藏键盘

14
我有一个小问题需要解决。当我打开我的应用程序时,键盘会显示以输入搜索视图的查询内容。然而,我只想在单击搜索视图时出现键盘。我该如何解决这个问题?
谢谢!
7个回答

10

这个对我起作用了。

/* 用于隐藏焦点的代码 */

searchView =(SearchView)view.findViewById(R.id.searchView);
searchView.setFocusable(false);

这也将防止视图在需要时获得焦点。 - Abandoned Cart

7

在XML文件中的layout标签中使用这些属性:

android:focusable="true"
android:focusableInTouchMode="true"

或者在您的活动清单 XML 中添加以下属性:

android:windowSoftInputMode="stateAlwaysHidden"

1
谢谢您的快速回复!不过,很遗憾,这些方法都没有起作用。开机时键盘仍然会显示。 - Casper Lindberg
抱歉,我自己发现了错误。我将android:windowSoftInputMode="stateAlwaysHidden"放在了应用程序下而不是Activity下。现在它可以正常工作了!然而,当键盘隐藏时,搜索栏仍然会闪烁(就像你正在向其中输入文本)。是否有可能解决这个问题呢? - Casper Lindberg
1
接受这个答案并开始另一个。 - Stanojkovic
1
太好了。我找到的所有解决方案都对我无效。清单的更改解决了这个问题。 - John Ward
@Stanojkovic 可能因为它是一个不完整的答案,所以没有被接受。这是一种非常“hacky”的解决问题的方式,依赖于相互冲突的参数彼此覆盖。 - Abandoned Cart

6
这对我有效:
searchView =(SearchView)view.findViewById(R.id.searchView);
searchView.clearFocus();

这个答案没有利用API中的漏洞。感谢您的添加。 - Abandoned Cart

5
这是我的工作:在活动或片段的onResume()方法中保持专注。
objSearchView=(SearchView)view.findViewById(R.id.searchView);

 @Override
    public void onResume() {
        super.onResume();
        objSearchView.clearFocus();
    }

0

对我来说,我需要同时调用setFocusable(false)和clearFocus()。

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        . . .
        searchView = (SearchView) findViewById(R.id.search_view);
        searchView.setFocusable(false);
        . . .
    }

@Override
    protected void onResume() {
        super.onResume();
        . . .
        searchView.clearFocus();
        . . .
    }

0

请确保不要使用这个:

searchInput = (SearchView) layout.findViewById(R.id.search);
searchInput.onActionViewExpanded();//<<<<------------------ don't use it.

0

这对我有用 我曾经使用过这段代码隐藏键盘并显示提示

 searchView =(SearchView)view.findViewById(R.id.searchView);
    
    searchView .setIconified(false);
    searchView .clearFocus();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接