【问题标题】:Disabling SearchView禁用搜索视图
【发布时间】:2012-07-11 06:28:20
【问题描述】:

我正在尝试从我的Activity 中禁用SearchView。我尝试了以下代码:

    mSearchView.setEnabled(false);
    mSearchView.setFocusable(false);
    mSearchView.setClickable(false);

但它不起作用。仍然可以单击 SearchView 并弹出键盘。我希望它变灰且不可点击。我怎样才能做到这一点?

【问题讨论】:

标签: android search android-widget


【解决方案1】:

清除 SearchView 焦点:

searchView.clearFocus();

隐藏搜索视图:

searchView.setVisibility(View.GONE);

【讨论】:

  • 可见性 GONE 和 clearFocus 如何成为“我希望它变灰且无法点击”的答案。
【解决方案2】:

要禁用任何视图(例如SearchView),请在布局 XML 中将其 input-type 设置为 none 或从 Activity 调用 view.setInputType(InputType.TYPE_NULL)

【讨论】:

  • 如何再次启用? @Deepti
【解决方案3】:

您也可以完全隐藏 searchView。 您可以通过以下方式隐藏搜索视图和搜索图标:

    searchItem.setVisible(false);
    searchView.setVisibility(View.GONE);

然后您可以通过以下方式将其取回:

    searchItem.setVisible(true);
    searchView.setVisibility(View.VISIBLE);

【讨论】:

    【解决方案4】:

    上述答案都不足以满足我的需求,因此我想为处于相同情况的任何人提供另一个答案。

    一个 SearchView 由不同的 View 组成,这些 View 可以 - 在这种情况下必须 - 单独处理。 如果您希望您的 SearchView(支持 v7)在这样的状态下冻结和变灰,不响应任何类型的输入,包括搜索和清除按钮,您可以使用:

    ImageView clearButton = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
    SearchView.SearchAutoComplete searchEditText = (SearchView.SearchAutoComplete) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
    
    clearButton.setEnabled(false);
    searchEditText.setEnabled(false);
    searchView.setSubmitButtonEnabled(false);
    

    ( 此外,我遇到了 deeptis answer searchView.setInputType(InputType.TYPE_NULL) 的问题:如果您以这种方式禁用 SearchView 并在之后单击它,系统似乎希望打开一个键盘,尽管没有显示键盘。因此,第一个返回按钮点击只会关闭 - 未显示或实际上未打开 - 键盘。)

    【讨论】:

      【解决方案5】:

      来自@outta Comfort 的回答,这是我的解决方案:

      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);
      

      【讨论】:

        猜你喜欢
        • 2015-03-24
        • 1970-01-01
        • 1970-01-01
        • 2017-08-14
        • 2016-09-08
        • 2012-07-16
        • 1970-01-01
        • 2015-09-14
        • 1970-01-01
        相关资源
        最近更新 更多