web-dev-qa-db-ja.com

Android SearchViewは、ユーザーが入力を開始する前にヒントテキストを表示します

SearchViewがあり、ヒントテキストを追加しようとしています。ユーザーが実際にSearchViewをタップしたときにのみヒントを表示できるようです。私はたくさんグーグルで検索し、StackOverflowで見つけたさまざまなアプローチを試しました。

searchView.onActionViewExpanded();
searchView.setIconified(true);
searchView.setQueryHint("Mitarbeiter suchen");

または、上記のコードをいじってみてください。 XMLファイルにIconifiedByDefaultを追加しようとしましたが、役に立ちませんでした。

私はそれのための方法があると確信しています。誰か助けてもらえますか? :)

fragment_main.xml

<Android.support.v7.widget.SearchView
    Android:id="@+id/search_view"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:queryHint="Mitarbeiter suchen">

</Android.support.v7.widget.SearchView>
8
Abed Naseri

IsFocused()メソッドによってsearchViewがフォーカスされているかどうかを確認します。一致する場合は、フォーカスがクリアされます。

searchView = (SearchView) findViewById(R.id.searchView);
searchEditText = (EditText) findViewById(R.id.search_src_text); //SearchView editText
closeButton = (ImageView) findViewById(R.id.search_close_btn); //X button of SearchView

searchView.onActionViewExpanded(); //new Added line
searchView.setIconifiedByDefault(false);
searchView.setQueryHint("Search Here");

if(!searchView.isFocused()) {
    searchView.clearFocus();
}

//Query
searchView.setOnQueryTextListener(new 
           SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {

            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {

            return false;
        }
    });

//This is the your x button
closeButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //Clear the text from EditText view
            searchEditText.setText("");

            //Clear query
            searchView.setQuery("", false);
            searchView.clearFocus();
        }
    });

これが私のデモアプリのスクリーンショットで、断片化されています。

iconifiedByDefaultおよびfocusableプロパティをfalseに設定するとうまくいきました。

<Android.support.v7.widget.SearchView
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:focusable="false"
    app:iconifiedByDefault="false"
    app:queryHint="test" />
12
Gnzlt

検索フィールドを常に表示したい場合は、setIconifiedByDefault(false)を呼び出します。

プログラムでsetIconifiedByDefault(false)

XMLでapp:iconifiedByDefault="false"

3
santalu