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)加載對話框效果
這篇文章將介紹如何定制當今主流的對話框,通過自定義dialog實現(xiàn)加載對話框效果,具體實現(xiàn)代碼大家通過本文學(xué)習(xí)吧2018-05-05
Android開發(fā)筆記之:在ImageView上繪制圓環(huán)的實現(xiàn)方法
本篇文章是對Android中在ImageView上繪制圓環(huán)的方法進行了詳細的分析介紹,需要的朋友參考下2013-05-05
Android程序打開和對輸入法的操作(打開/關(guān)閉)
整理了一下Android下對輸入法的操作:打開輸入法窗口、關(guān)閉出入法窗口、如果輸入法打開則關(guān)閉,如果沒打開則打開、獲取輸入法打開的狀態(tài)2013-05-05
Android Studio將AAR包發(fā)布到Maven本地倉庫的流程步驟
Android AAR文件是Android Archive文件的縮寫,是一種Android應(yīng)用程序存檔文件格式,類似于JAR文件格式,它在Android Studio中被廣泛使用,本文給大家介紹了Android Studio將AAR包發(fā)布到Maven本地倉庫的流程步驟,需要的朋友可以參考下2025-03-03
Flutter?Getx中的put和lazyPut函數(shù)使用案例解析
這篇文章主要為大家介紹了Flutter?Getx中的put和lazyPut函數(shù)使用案例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07
Kotlin?Dispatchers協(xié)程調(diào)度器源碼深入分析
Kotlin協(xié)程不是什么空中閣樓,Kotlin源代碼會被編譯成class字節(jié)碼文件,最終會運行到虛擬機中。所以從本質(zhì)上講,Kotlin和Java是類似的,都是可以編譯產(chǎn)生class的語言,但最終還是會受到虛擬機的限制,它們的代碼最終會在虛擬機上的某個線程上被執(zhí)行2022-11-11
Android網(wǎng)絡(luò)監(jiān)聽和網(wǎng)絡(luò)判斷示例介紹
大家好,本篇文章主要講的是Android網(wǎng)絡(luò)監(jiān)聽和網(wǎng)絡(luò)判斷示例介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12

