Android ActionBar搜索功能用法詳解
本文實例講述了Android ActionBar搜索功能用法。分享給大家供大家參考,具體如下:
使用ActionBar SearchView時的注意點:
首先要吐槽一下Android的官方Guide文檔 ,關(guān)于用法講得不明確,可能是一直沒更新的原因吧。
本來照著文檔搞了一下,hint死活出不來,也無法跳轉(zhuǎn)到搜索結(jié)果Activity。
StackOverflow也有人提出了這個問題,答案說得很明白 - 參考鏈接。
正確用法
1. 在AndroidManifest.xml中為提供SearchView的Activity添加meta-data
<activity android:name=".navigation.NavigationActivity" android:label="@string/title_activity_navigation"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> <meta-data android:name="android.app.default_searchable" android:value=".search.SearchResultActivity" /> </activity>
2. 在提供搜索結(jié)果的Activity中添加為SearchableInfo用的meta-data
<activity android:name=".search.SearchResultActivity" android:label="@string/title_activity_search_result" android:launchMode="singleTop"> <intent-filter> <action android:name="android.intent.action.SEARCH" /> </intent-filter> <!--This metadata entry provides further configuration details for searches--> <!--that are handled by this activity.--> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" /> </activity>
3. @xml/searchable文件中的Android:hint只能使用string.xml中定義的字符串,不能hard-coded
<?xml version="1.0" encoding="utf-8"?> <searchable xmlns:android="http://schemas.android.com/apk/res/android" android:label="@string/app_name" android:hint="@string/search_hint"> </searchable>
4. 初始化Menu的時候,獲取SearchableInfo
SearchManager searchManager = (SearchManager)getSystemService(Context.SEARCH_SERVICE); SearchView searchView = (SearchView)menu.findItem(R.id.action_search).getActionView(); searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
注意點
SearchManager通過ComponentName查找SearchableInfo的時候,對應(yīng)Component必須滿足一定條件:
1. intent-filter包含
<action android:name="android.intent.action.SEARCH" />
2. meta-data
<meta-data android:name="android.app.searchable" android:resource="@xml/searchable" />
另一種方法
既然SearchManager是通過ComponentName來獲取SearchableInfo,當然可以直接從提供搜索結(jié)果的Activity中獲取ComponentName。
SearchManager searchManager = (SearchManager)getSystemService(Context.SEARCH_SERVICE); SearchView searchView = (SearchView)menu.findItem(R.id.action_search).getActionView(); ComponentName cn = new ComponentName("com.liangfeizc.catykanji", "com.liangfeizc.catykanji.search.SearchResultActivity"); searchView.setSearchableInfo(searchManager.getSearchableInfo(cn));
tips
ComponentName構(gòu)造函數(shù)的第一個參數(shù)pkg是Application的Package,不是目標類所在的Package。
The first parameter ComponentName(String pkg, String cls) is application package not the package where the activity is.
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android視圖View技巧總結(jié)》、《Android操作XML數(shù)據(jù)技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android資源操作技巧匯總》、《Android文件操作技巧匯總》、《Android操作SQLite數(shù)據(jù)庫技巧總結(jié)》、《Android操作json格式數(shù)據(jù)技巧總結(jié)》、《Android數(shù)據(jù)庫操作技巧總結(jié)》、《Android編程開發(fā)之SD卡操作方法匯總》、《Android開發(fā)入門與進階教程》及《Android控件用法總結(jié)》
希望本文所述對大家Android程序設(shè)計有所幫助。
- Android自定義ActionBar實例
- Android中ActionBar以及menu的代碼設(shè)置樣式
- android中開啟actionbar的兩種方法
- Android ActionBar使用教程
- 靈活使用Android中ActionBar和ViewPager切換頁面
- Android巧用ActionBar實現(xiàn)tab導(dǎo)航效果
- Android巧用ActionBar實現(xiàn)下拉式導(dǎo)航
- Android編程實現(xiàn)ActionBar的home圖標動畫切換效果
- Android 活動條ActionBar的詳解及實例代碼
- Android ActionBarActivity設(shè)置全屏無標題實現(xiàn)方法總結(jié)
- Android編程之ActionBar Tabs用法實例分析
- Android學(xué)習(xí)筆記之ActionBar Item用法分析
相關(guān)文章
Android自定義Dialog實現(xiàn)通用圓角對話框
這篇文章主要為大家詳細介紹了Android自定義Dialog實現(xiàn)通用圓角對話框,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-11-11Android開發(fā)Jetpack組件Lifecycle使用篇
這一篇文章來介紹Android?Jetpack架構(gòu)組件的Lifecycle;?Lifecycle用于幫助開發(fā)者管理Activity和Fragment?的生命周期,?由于Lifecycle是LiveData和ViewModel的基礎(chǔ);所以需要先學(xué)習(xí)它2022-08-08Kotlin?Flow數(shù)據(jù)流的3種使用場景詳解
這篇文章主要為大家詳細介紹了Kotlin中Flow數(shù)據(jù)流的幾種使用場景,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下2023-04-04Android適配利用webview加載后圖片顯示過大的問題解決
這篇文章主要給大家介紹了關(guān)于Android適配利用webview加載后圖片顯示過大問題的解決方法,文中通過示例代碼介紹的非常詳細,對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07加載頁面遮擋耗時操作任務(wù)頁面--第三方開源之AndroidProgressLayout
AndroidProgressLayout實現(xiàn)為界面添加圓形進度條。調(diào)用setprogress()方法顯示和隱藏進度條,這篇文章主要介紹了加載頁面遮擋耗時操作任務(wù)頁面--第三方開源之AndroidProgressLayout的相關(guān)資料,需要的朋友可以參考下2015-11-11Android網(wǎng)絡(luò)請求庫android-async-http介紹
這篇文章主要介紹了Android網(wǎng)絡(luò)請求庫android-async-http介紹,本文講解了android-async-http的概念、特征以及使用實例,需要的朋友可以參考下2015-06-06