11935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov/* 21935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * Copyright (C) 2011 The Android Open Source Project 31935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * 41935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * Licensed under the Apache License, Version 2.0 (the "License"); 51935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * you may not use this file except in compliance with the License. 61935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * You may obtain a copy of the License at 71935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * 81935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * http://www.apache.org/licenses/LICENSE-2.0 91935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * 101935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * Unless required by applicable law or agreed to in writing, software 111935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * distributed under the License is distributed on an "AS IS" BASIS, 121935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * See the License for the specific language governing permissions and 141935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * limitations under the License. 151935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov */ 161935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov 171935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganovpackage android.support.v4.widget; 181935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov 1944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackbornimport android.app.SearchManager; 2044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackbornimport android.content.ComponentName; 211935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganovimport android.content.Context; 221935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganovimport android.os.Build; 231935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganovimport android.view.View; 2444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackbornimport android.widget.TextView; 251935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov 261935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov/** 270574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Helper for accessing features in {@link android.widget.SearchView} 280574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * introduced after API level 4 in a backwards compatible fashion. 291935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov */ 301935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganovpublic class SearchViewCompat { 311935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov 321935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov interface SearchViewCompatImpl { 331935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov View newSearchView(Context context); 3444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn void setSearchableInfo(View searchView, ComponentName searchableComponent); 3544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn void setImeOptions(View searchView, int imeOptions); 3644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn void setInputType(View searchView, int inputType); 371935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov Object newOnQueryTextListener(OnQueryTextListenerCompat listener); 381935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov void setOnQueryTextListener(Object searchView, Object listener); 3944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn Object newOnCloseListener(OnCloseListenerCompat listener); 4044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn void setOnCloseListener(Object searchView, Object listener); 4144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn CharSequence getQuery(View searchView); 4244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn void setQuery(View searchView, CharSequence query, boolean submit); 4344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn void setQueryHint(View searchView, CharSequence hint); 4444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn void setIconified(View searchView, boolean iconify); 4544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn boolean isIconified(View searchView); 4644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn void setSubmitButtonEnabled(View searchView, boolean enabled); 4744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn boolean isSubmitButtonEnabled(View searchView); 4844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn void setQueryRefinementEnabled(View searchView, boolean enable); 4944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn boolean isQueryRefinementEnabled(View searchView); 5044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn void setMaxWidth(View searchView, int maxpixels); 511935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov } 521935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov 531935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov static class SearchViewCompatStubImpl implements SearchViewCompatImpl { 541935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov 551935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov @Override 561935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov public View newSearchView(Context context) { 571935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov return null; 581935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov } 591935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov 601935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov @Override 6144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public void setSearchableInfo(View searchView, ComponentName searchableComponent) { 6244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 6344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 6444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 6544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public void setImeOptions(View searchView, int imeOptions) { 6644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 6744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 6844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 6944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public void setInputType(View searchView, int inputType) { 7044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 7144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 7244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 731935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov public Object newOnQueryTextListener(OnQueryTextListenerCompat listener) { 741935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov return null; 751935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov } 761935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov 771935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov @Override 781935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov public void setOnQueryTextListener(Object searchView, Object listener) { 7944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 8044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 8144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 8244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public Object newOnCloseListener(OnCloseListenerCompat listener) { 8344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn return null; 8444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 8544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 8644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 8744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public void setOnCloseListener(Object searchView, Object listener) { 8844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 8944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 9044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 9144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public CharSequence getQuery(View searchView) { 9244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn return null; 9344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 941935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov 9544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 9644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public void setQuery(View searchView, CharSequence query, boolean submit) { 9744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 9844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 9944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 10044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public void setQueryHint(View searchView, CharSequence hint) { 10144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 10244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 10344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 10444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public void setIconified(View searchView, boolean iconify) { 10544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 10644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 10744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 10844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public boolean isIconified(View searchView) { 10944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn return true; 11044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 11144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 11244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 11344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public void setSubmitButtonEnabled(View searchView, boolean enabled) { 11444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 11544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 11644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 11744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public boolean isSubmitButtonEnabled(View searchView) { 11844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn return false; 11944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 12044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 12144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 12244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public void setQueryRefinementEnabled(View searchView, boolean enable) { 12344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 12444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 12544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 12644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public boolean isQueryRefinementEnabled(View searchView) { 12744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn return false; 12844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 12944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 13044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 13144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public void setMaxWidth(View searchView, int maxpixels) { 1321935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov } 1331935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov } 1341935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov 1351935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov static class SearchViewCompatHoneycombImpl extends SearchViewCompatStubImpl { 1361935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov 1371935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov @Override 1381935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov public View newSearchView(Context context) { 1391935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov return SearchViewCompatHoneycomb.newSearchView(context); 1401935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov } 1411935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov 1421935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov @Override 14344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public void setSearchableInfo(View searchView, ComponentName searchableComponent) { 14444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn SearchViewCompatHoneycomb.setSearchableInfo(searchView, searchableComponent); 14544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 14644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 14744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 1481935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov public Object newOnQueryTextListener(final OnQueryTextListenerCompat listener) { 1491935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov return SearchViewCompatHoneycomb.newOnQueryTextListener( 1501935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov new SearchViewCompatHoneycomb.OnQueryTextListenerCompatBridge() { 1511935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov @Override 1521935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov public boolean onQueryTextSubmit(String query) { 1531935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov return listener.onQueryTextSubmit(query); 1541935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov } 1551935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov @Override 1561935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov public boolean onQueryTextChange(String newText) { 1571935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov return listener.onQueryTextChange(newText); 1581935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov } 1591935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov }); 1601935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov } 1611935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov 1621935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov @Override 1631935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov public void setOnQueryTextListener(Object searchView, Object listener) { 1641935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov SearchViewCompatHoneycomb.setOnQueryTextListener(searchView, listener); 1651935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov } 16644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 16744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 16844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public Object newOnCloseListener(final OnCloseListenerCompat listener) { 16944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn return SearchViewCompatHoneycomb.newOnCloseListener( 17044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn new SearchViewCompatHoneycomb.OnCloseListenerCompatBridge() { 17144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 17244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public boolean onClose() { 17344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn return listener.onClose(); 17444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 17544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn }); 17644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 17744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 17844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 17944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public void setOnCloseListener(Object searchView, Object listener) { 18044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn SearchViewCompatHoneycomb.setOnCloseListener(searchView, listener); 18144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 18244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 18344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 18444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public CharSequence getQuery(View searchView) { 18544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn return SearchViewCompatHoneycomb.getQuery(searchView); 18644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 18744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 18844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 18944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public void setQuery(View searchView, CharSequence query, boolean submit) { 19044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn SearchViewCompatHoneycomb.setQuery(searchView, query, submit); 19144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 19244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 19344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 19444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public void setQueryHint(View searchView, CharSequence hint) { 19544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn SearchViewCompatHoneycomb.setQueryHint(searchView, hint); 19644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 19744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 19844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 19944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public void setIconified(View searchView, boolean iconify) { 20044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn SearchViewCompatHoneycomb.setIconified(searchView, iconify); 20144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 20244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 20344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 20444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public boolean isIconified(View searchView) { 20544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn return SearchViewCompatHoneycomb.isIconified(searchView); 20644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 20744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 20844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 20944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public void setSubmitButtonEnabled(View searchView, boolean enabled) { 21044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn SearchViewCompatHoneycomb.setSubmitButtonEnabled(searchView, enabled); 21144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 21244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 21344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 21444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public boolean isSubmitButtonEnabled(View searchView) { 21544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn return SearchViewCompatHoneycomb.isSubmitButtonEnabled(searchView); 21644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 21744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 21844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 21944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public void setQueryRefinementEnabled(View searchView, boolean enable) { 22044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn SearchViewCompatHoneycomb.setQueryRefinementEnabled(searchView, enable); 22144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 22244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 22344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 22444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public boolean isQueryRefinementEnabled(View searchView) { 22544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn return SearchViewCompatHoneycomb.isQueryRefinementEnabled(searchView); 22644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 22744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 22844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 22944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public void setMaxWidth(View searchView, int maxpixels) { 23044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn SearchViewCompatHoneycomb.setMaxWidth(searchView, maxpixels); 23144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 23244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 23344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 23444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn static class SearchViewCompatIcsImpl extends SearchViewCompatHoneycombImpl { 23544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 23644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 23744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public View newSearchView(Context context) { 23844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn return SearchViewCompatIcs.newSearchView(context); 23944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 24044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 24144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 24244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public void setImeOptions(View searchView, int imeOptions) { 24344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn SearchViewCompatIcs.setImeOptions(searchView, imeOptions); 24444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 24544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 24644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn @Override 24744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public void setInputType(View searchView, int inputType) { 24844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn SearchViewCompatIcs.setInputType(searchView, inputType); 24944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 2501935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov } 2511935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov 2521935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov private static final SearchViewCompatImpl IMPL; 2531935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov 2541935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov static { 25544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn if (Build.VERSION.SDK_INT >= 14) { // ICS 25644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn IMPL = new SearchViewCompatIcsImpl(); 25744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } else if (Build.VERSION.SDK_INT >= 11) { // Honeycomb 2581935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov IMPL = new SearchViewCompatHoneycombImpl(); 2591935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov } else { 2601935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov IMPL = new SearchViewCompatStubImpl(); 2611935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov } 2621935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov } 2631935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov 2641935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov private SearchViewCompat(Context context) { 2651935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov /* Hide constructor */ 2661935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov } 2671935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov 2681935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov /** 269fe32563fd610767a2d3eea8dbd96e6bae87739d5Svetoslav Ganov * Creates a new SearchView. 2701935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * 2711935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * @param context The Context the view is running in. 2721935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * @return A SearchView instance if the class is present on the current 2731935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * platform, null otherwise. 2741935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov */ 2751935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov public static View newSearchView(Context context) { 2761935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov return IMPL.newSearchView(context); 2771935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov } 2781935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov 2791935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov /** 28044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * Sets the SearchableInfo for this SearchView. Properties in the SearchableInfo are used 28144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * to display labels, hints, suggestions, create intents for launching search results screens 28244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * and controlling other affordances such as a voice button. 28344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * 28444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @param searchView The SearchView to operate on. 28571249413434c56006d2cb5d689198a2814c8e6b7Dianne Hackborn * @param searchableComponent The application component whose 28644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * {@link android.app.SearchableInfo} should be loaded and applied to 28744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * the SearchView. 28844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn */ 28944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public static void setSearchableInfo(View searchView, ComponentName searchableComponent) { 29044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn IMPL.setSearchableInfo(searchView, searchableComponent); 29144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 29244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 29344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn /** 29444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * Sets the IME options on the query text field. This is a no-op if 29544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * called on pre-{@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH} 29644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * platforms. 29744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * 29844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @see TextView#setImeOptions(int) 29944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @param searchView The SearchView to operate on. 30044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @param imeOptions the options to set on the query text field 30144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn */ 30244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public static void setImeOptions(View searchView, int imeOptions) { 30344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn IMPL.setImeOptions(searchView, imeOptions); 30444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 30544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 30644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn /** 30744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * Sets the input type on the query text field. This is a no-op if 30844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * called on pre-{@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH} 30944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * platforms. 31044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * 31144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @see TextView#setInputType(int) 31244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @param searchView The SearchView to operate on. 31344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @param inputType the input type to set on the query text field 31444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn */ 31544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public static void setInputType(View searchView, int inputType) { 31644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn IMPL.setInputType(searchView, inputType); 31744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 31844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 31944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn /** 3201935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * Sets a listener for user actions within the SearchView. 3211935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * 3221935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * @param searchView The SearchView in which to register the listener. 3231935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * @param listener the listener object that receives callbacks when the user performs 3241935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * actions in the SearchView such as clicking on buttons or typing a query. 3251935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov */ 3261935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov public static void setOnQueryTextListener(View searchView, OnQueryTextListenerCompat listener) { 3271935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov IMPL.setOnQueryTextListener(searchView, listener.mListener); 3281935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov } 3291935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov 3301935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov /** 3311935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * Callbacks for changes to the query text. 3321935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov */ 3331935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov public static abstract class OnQueryTextListenerCompat { 3341935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov final Object mListener; 3351935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov 3361935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov public OnQueryTextListenerCompat() { 3371935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov mListener = IMPL.newOnQueryTextListener(this); 3381935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov } 3391935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov 3401935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov /** 3411935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * Called when the user submits the query. This could be due to a key press on the 3421935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * keyboard or due to pressing a submit button. 3431935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * The listener can override the standard behavior by returning true 3441935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * to indicate that it has handled the submit request. Otherwise return false to 3451935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * let the SearchView handle the submission by launching any associated intent. 3461935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * 3471935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * @param query the query text that is to be submitted 3481935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * 3491935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * @return true if the query has been handled by the listener, false to let the 3501935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * SearchView perform the default action. 3511935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov */ 3521935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov public boolean onQueryTextSubmit(String query) { 3531935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov return false; 3541935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov } 3551935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov 3561935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov /** 3571935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * Called when the query text is changed by the user. 3581935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * 3591935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * @param newText the new content of the query text field. 3601935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * 3611935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * @return false if the SearchView should perform the default action of showing any 3621935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * suggestions if available, true if the action was handled by the listener. 3631935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov */ 3641935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov public boolean onQueryTextChange(String newText) { 3651935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov return false; 3661935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov } 3671935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov } 36844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 36944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn /** 37044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * Sets a listener to inform when the user closes the SearchView. 37144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * 37244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @param searchView The SearchView in which to register the listener. 37344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @param listener the listener to call when the user closes the SearchView. 37444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn */ 37544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public static void setOnCloseListener(View searchView, OnCloseListenerCompat listener) { 37644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn IMPL.setOnCloseListener(searchView, listener.mListener); 37744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 37844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 37944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn /** 38044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * Callback for closing the query UI. 38144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn */ 38244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public static abstract class OnCloseListenerCompat { 38344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn final Object mListener; 38444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 38544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public OnCloseListenerCompat() { 38644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn mListener = IMPL.newOnCloseListener(this); 38744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 38844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 38944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn /** 39044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * The user is attempting to close the SearchView. 39144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * 39244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @return true if the listener wants to override the default behavior of clearing the 39344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * text field and dismissing it, false otherwise. 39444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn */ 39544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public boolean onClose() { 39644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn return false; 39744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 39844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 39944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 40044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn /** 40144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * Returns the query string currently in the text field. 40244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * 40344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @param searchView The SearchView to operate on. 40444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * 40544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @return the query string 40644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn */ 40744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public static CharSequence getQuery(View searchView) { 40844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn return IMPL.getQuery(searchView); 40944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 41044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 41144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn /** 41244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * Sets a query string in the text field and optionally submits the query as well. 41344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * 41444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @param searchView The SearchView to operate on. 41544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @param query the query string. This replaces any query text already present in the 41644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * text field. 41744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @param submit whether to submit the query right now or only update the contents of 41844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * text field. 41944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn */ 42044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public static void setQuery(View searchView, CharSequence query, boolean submit) { 42144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn IMPL.setQuery(searchView, query, submit); 42244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 42344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 42444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn /** 42544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * Sets the hint text to display in the query text field. This overrides any hint specified 42644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * in the SearchableInfo. 42744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * 42844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @param searchView The SearchView to operate on. 42944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @param hint the hint text to display 43044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn */ 43144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public static void setQueryHint(View searchView, CharSequence hint) { 43244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn IMPL.setQueryHint(searchView, hint); 43344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 43444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 43544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn /** 43644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * Iconifies or expands the SearchView. Any query text is cleared when iconified. This is 43744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * a temporary state and does not override the default iconified state set by 43871249413434c56006d2cb5d689198a2814c8e6b7Dianne Hackborn * setIconifiedByDefault(boolean). If the default state is iconified, then 43944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * a false here will only be valid until the user closes the field. And if the default 44044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * state is expanded, then a true here will only clear the text field and not close it. 44144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * 44244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @param searchView The SearchView to operate on. 44344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @param iconify a true value will collapse the SearchView to an icon, while a false will 44444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * expand it. 44544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn */ 44644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public static void setIconified(View searchView, boolean iconify) { 44744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn IMPL.setIconified(searchView, iconify); 44844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 44944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 45044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn /** 45144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * Returns the current iconified state of the SearchView. 45244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * 45344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @param searchView The SearchView to operate on. 45444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @return true if the SearchView is currently iconified, false if the search field is 45544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * fully visible. 45644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn */ 45744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public static boolean isIconified(View searchView) { 45844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn return IMPL.isIconified(searchView); 45944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 46044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 46144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn /** 46244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * Enables showing a submit button when the query is non-empty. In cases where the SearchView 46344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * is being used to filter the contents of the current activity and doesn't launch a separate 46444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * results activity, then the submit button should be disabled. 46544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * 46644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @param searchView The SearchView to operate on. 46744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @param enabled true to show a submit button for submitting queries, false if a submit 46844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * button is not required. 46944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn */ 47044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public static void setSubmitButtonEnabled(View searchView, boolean enabled) { 47144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn IMPL.setSubmitButtonEnabled(searchView, enabled); 47244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 47344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 47444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn /** 47544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * Returns whether the submit button is enabled when necessary or never displayed. 47644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * 47744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @param searchView The SearchView to operate on. 47844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @return whether the submit button is enabled automatically when necessary 47944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn */ 48044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public static boolean isSubmitButtonEnabled(View searchView) { 48144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn return IMPL.isSubmitButtonEnabled(searchView); 48244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 48344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 48444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn /** 48544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * Specifies if a query refinement button should be displayed alongside each suggestion 48644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * or if it should depend on the flags set in the individual items retrieved from the 48744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * suggestions provider. Clicking on the query refinement button will replace the text 48844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * in the query text field with the text from the suggestion. This flag only takes effect 48971249413434c56006d2cb5d689198a2814c8e6b7Dianne Hackborn * if a SearchableInfo has been specified with {@link #setSearchableInfo(View, ComponentName)} 49044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * and not when using a custom adapter. 49144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * 49244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @param searchView The SearchView to operate on. 49344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @param enable true if all items should have a query refinement button, false if only 49444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * those items that have a query refinement flag set should have the button. 49544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * 49644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @see SearchManager#SUGGEST_COLUMN_FLAGS 49744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @see SearchManager#FLAG_QUERY_REFINEMENT 49844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn */ 49944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public static void setQueryRefinementEnabled(View searchView, boolean enable) { 50044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn IMPL.setQueryRefinementEnabled(searchView, enable); 50144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 50244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 50344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn /** 50444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * Returns whether query refinement is enabled for all items or only specific ones. 50544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @param searchView The SearchView to operate on. 50644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @return true if enabled for all items, false otherwise. 50744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn */ 50844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public static boolean isQueryRefinementEnabled(View searchView) { 50944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn return IMPL.isQueryRefinementEnabled(searchView); 51044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 51144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn 51244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn /** 51344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * Makes the view at most this many pixels wide 51444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn * @param searchView The SearchView to operate on. 51544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn */ 51644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn public static void setMaxWidth(View searchView, int maxpixels) { 51744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn IMPL.setMaxWidth(searchView, maxpixels); 51844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn } 5191935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov} 520