10

私のアプリケーションには、他の多くのアプリケーションと同様に、共通の検索ウィジェット ( http://developer.android.com/guide/topics/search/search-dialog.html#UsingSearchWidget ) があります。

キーボードの検索ボタンが押された場合にのみ、フラグメントを変更します (そして、検索された用語をそれに渡します)。

私は試してみました

searchView.setOnSearchClickListener(new OnClickListener() { 
@Override public void onClick(View v) { 
} });

ただし、アクションバーのボタンを押したときにトリガーされ、検索入力を折りたたむのではなく、キーボードボタンの検索がクリックされたときではありません。

どのように可能か知っていますか?

4

6 に答える 6

2

このコードを試してください。とても小さくて分かりやすいです。

  @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu, menu);


        // Associate searchable configuration with the SearchView
        SearchManager searchManager =
                (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView =
                (SearchView) menu.findItem(R.id.search).getActionView();
        final EditText searchEditText = (EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);

        searchEditText.setHint("Search");

        searchEditText.setHintTextColor(getResources().getColor(R.color.white));
        searchView.setSearchableInfo(
                searchManager.getSearchableInfo(getComponentName()));

        searchEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView view, int actionId, KeyEvent event) {
                if (actionId == EditorInfo.IME_ACTION_SEARCH) {
                    //run query to the server
                    Log.e("onClick: ", "-- " + searchEditText.getText().toString().trim());

                }
                return false;
            }
        });


        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.

        return super.onOptionsItemSelected(item);
    }

menu.xml ファイル

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/search"
        android:icon="@android:drawable/ic_menu_search"
        android:title="Search"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="always" />

</menu>
于 2016-05-13T10:30:42.333 に答える
1

これは、編集テキストに使用したコードです。同様のことがうまくいく可能性があります:

editTextSearch.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView view, int actionId, KeyEvent event) {
    if (actionId == EditorInfo.IME_ACTION_SEARCH) {
      //run query to the server
    }
    return false;
}
});
于 2014-06-20T18:42:15.003 に答える
0

まず、SearchView のIME_ACTION_SEARCHとして IME オプションを設定します(ただし、キーボードは自動的に設定する場合があります) 。

searchView.setImeOptions(EditorInfo.IME_ACTION_SEARCH);

次に、キーパッドで検索アイコンが押されているかどうかを確認します

    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {

          public boolean onQueryTextSubmit(String query) {
               searchView.clearFocus();     // Close keyboard on pressing IME_ACTION_SEARCH option
               Log.d(TAG, "QueryTextSubmit : "+ query);
               //load search query
               return true;
    }

          @Override
          public boolean onQueryTextChange(String newText) {
               Log.d(TAG, "QueryTextChange: "+ newText);
               return false;
          }
});

注 :ここで、キーボードの検索アイコンが押されると、 onQueryTextSubmit()が呼び出されます。

また、serchView . clearFocus()はキーボードを折りたたみます。

うまくいけば、これはあなたが探しているものです。

于 2016-10-02T22:11:48.503 に答える