如何禁用searchview?

时间:2013-12-09 23:14:36

标签: android searchview

您可以帮助我按下按钮时如何禁用searchview吗?我正在尝试这段代码:

searchView.setEnabled(false);
                searchView.setFocusableInTouchMode(false);
                searchView.clearFocus();

但它似乎无法正常工作。我仍然可以在searchview中输入文字。

谢谢.. :))

10 个答案:

答案 0 :(得分:7)

您可以使用:

searchView.clearFocus();

如果你想隐藏它:

searchView.setVisibility(View.GONE);

答案 1 :(得分:6)

以上所有问题对我都不起作用。 Becase SearchView是一个ViewGroup,所以我们必须禁用它的所有子视图。

private void enableSearchView(View view, boolean enabled) {
    view.setEnabled(enabled);
    if (view instanceof ViewGroup) {
        ViewGroup viewGroup = (ViewGroup) view;
        for (int i = 0; i < viewGroup.getChildCount(); i++) {
            View child = viewGroup.getChildAt(i);
            enableSearchView(child, enabled);
        }
    }
}

在其他地方,请致电:

enableSearchView(searchView, true/false);

答案 2 :(得分:1)

尝试以下方法:

searchview.setInputType(InputType.TYPE_NULL);

答案 3 :(得分:1)

SearchView不是您输入的实际EditText,而是一个LinearLayout,其中包含一堆视图,包括EditText

要获取您实际想要禁用它的视图:

EditText searchViewEditText = (EditText) searchView.findViewById(R.id.search_src_text);

请注意,这仅适用于您使用支持v7 SearchView的情况,因为如果您使用框架SearchView,则特定资源ID是内部的。

答案 4 :(得分:1)

searchView.findViewById(R.id.search_button).setEnabled(false);

但是你必须检查它是否为null并隐藏searchView:

ImageView searchBtn = (ImageView) searchView.findViewById(R.id.search_button);
if (searchBtn != null) searchBtn.setEnabled(false);
searchView.setVisibility(View.GONE);

我认为这会起作用

答案 5 :(得分:0)

你试过吗

searchView.setVisibility(View.GONE);

答案 6 :(得分:0)

这对我有用

ImageView searchIcon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_button);
    searchIcon.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           // Don't perform any action.
        }
    });

答案 7 :(得分:0)

尝试以下代码:

searchView.setIconified(true);

答案 8 :(得分:0)

searchView.setOnQueryTextFocusChangeListener( new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if(hasFocus && !v.isEnabled()) v.clearFocus();
            }
        }

答案 9 :(得分:-1)

如果要清除它(SearchView),请执行:

searchView.clearFocus();

如果你想暂时隐藏它,请执行以下操作:

searchView.setVisibility(View.GONE);