簡體   English   中英

按下“后退”按鈕時折疊SearchView(在ActionBar中)

[英]Collapse SearchView (in ActionBar) on Back button press

我已經在ActionBar中實現了SearchView,但是問題是,每當鍵入內容並按提交時,SearchView都不會折疊回該搜索圖標,它會保持展開狀態,當我按“返回”按鈕時,SearchView都不會折疊背部。

我的實現是這樣的:

menu_search.xml

<item
    android:id="@+id/app_bar_search"
    android:icon="@drawable/ic_search_white_24dp"
    android:title="Search"
    app:actionViewClass="android.widget.SearchView"
    app:showAsAction="always" />

MainActivity.java

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_search, menu);
    item = menu.findItem(R.id.app_bar_search);
    searchView = (SearchView) item.getActionView();
    searchView.setMaxWidth(Integer.MAX_VALUE);

    int searchBarId = searchView.getContext().getResources().getIdentifier("android:id/search_bar", null, null);
    searchBar = searchView.findViewById(searchBarId);
    searchBar.setLayoutTransition(new LayoutTransition());

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

            item.collapseActionView();

            searchView.setQuery("", false);
            searchView.clearFocus();
            searchBar.clearFocus();

            .
            .
            .
            .
            .

            return true;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            return false;
        }
    });

    return super.onCreateOptionsMenu(menu);
}

我嘗試過的事情:

@Override
public void onBackPressed() {
    super.onBackPressed();
    if (item.isActionViewExpanded()) {
        item.collapseActionView();
    } else {
        super.onBackPressed();
    }
}

   @Override
   public void onBackPressed() {
       super.onBackPressed();
       if (searchView != null) {
           searchView.onActionViewCollapsed();
           searchView.setQuery("", false);
           searchView.clearFocus();
           searchBar.clearFocus();
           hideSoftKeyboard(MainActivity.this);
       } else {
           super.onBackPressed();
       }
   }

   public static void hideSoftKeyboard(Activity activity) {
       InputMethodManager inputMethodManager =
               (InputMethodManager) activity.getSystemService(
                       Activity.INPUT_METHOD_SERVICE);
       inputMethodManager.hideSoftInputFromWindow(
               activity.getCurrentFocus().getWindowToken(), 0);
   }

SearchView從左到右展開以鍵入,但不會從右到左折疊回去。

請指教。

嘗試下面的代碼,讓我知道它是否有效。

SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
                    searchView.setSearchableInfo(searchManager.getSearchableInfo(new ComponentName(this, ResultActivity.class)));
    searchView.setImeOptions(EditorInfo.IME_ACTION_SEARCH);
            searchView.setOnSuggestionListener(new SearchView.OnSuggestionListener() {
                @Override
                public boolean onSuggestionSelect(int position) {
                    return false;
                }

                @Override
                public boolean onSuggestionClick(int position) {
                    searchView.clearFocus();
                    item.collapseActionView();
                    return false;
                }
            });
            searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                @Override
                public boolean onQueryTextSubmit(String query) {
                    searchView.clearFocus();
                    item.collapseActionView();
                    return false;
                }

                @Override
                public boolean onQueryTextChange(String newText) {
                    return false;
                }
            });

我正在瀏覽Google搜索的第二頁,發現了這一點。 它為我工作。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM