6

からを無効にしようとしSearchViewていActivityます。私は次のコードを試しました:

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

しかし、それは機能しません。SearchViewをクリックしても、KeyBoardがポップアップ表示されます。グレー表示にしてクリックできないようにしたい。どうすればこれを達成できますか?

4

5 に答える 5

11

記載されている回答はどれも私のニーズに十分ではなかったので、同じ状況の人に別の回答を提供したいと思います。

SearchView、フォーカスがあり、検索とクリアボタンがあります

SearchViewはさまざまなビューで構成されており、個別にアドレス指定することができます(この場合はアドレス指定する必要があります)。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の回答で問題が発生しましたsearchView.setInputType(InputType.TYPE_NULL):この方法でSearchViewを無効にして後でクリックすると、キーボードは表示されていませんが、システムはキーボードが開いていることを期待しているようです。したがって、最初に戻るボタンをクリックすると、 -表示されていないか、実際には開かれていません-キーボード。)

于 2016-06-15T18:05:56.543 に答える
6

ビューを無効にするには(たとえばSearchView)、レイアウトXMLでに設定input-typeするか、から呼び出します。noneview.setInputType(InputType.TYPE_NULL)Activity

于 2014-01-15T07:51:29.557 に答える
2

searchViewを完全に非表示にすることもできます。これを行うことにより、searchviewとsearchiconを非表示にできます。

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

次に、次の方法で元に戻すことができます。

    searchItem.setVisible(true);
    searchView.setVisibility(View.VISIBLE);
于 2015-08-08T09:33:00.950 に答える
0

SearchViewフォーカスをクリアするには:

searchView.clearFocus();

SearchViewを非表示にするには:

searchView.setVisibility(View.GONE);
于 2012-08-16T08:02:41.477 に答える
0

@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);
于 2016-09-09T09:14:29.090 に答える