Android toolbar的靈活性很高,因為它本身就是一個ViewGroup,所以可以通過添加自定義view的形式自行設置標題的樣式,這樣既不就能滿足大部分需求了。 本次主要說一下使用SearchView的時候,如何自定義它的樣式。
網上大部分都是通過獲取SearchView里的控件如EditText來修改它的樣式,主要代碼如下: SearchView searchView = (SearchView) findViewById(R.id.search); int id = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null); TextView textView = (TextView) searchView.findViewById(id); textView.setTextColor(getResources().getColor(R.color.black6)); textView.setHintTextColor(getResources().getColor(R.color.lightgrey));
這個方法簡單粗暴(本人并未實踐),但是個人感覺有點麻煩且不夠優雅。如果很多頁面需要用到的話search的話都需要添加這么一段代碼,比較繁瑣。那有沒有一個一勞永逸的方法呢?答案是肯定的!
其實我們可以通過設置style的方式來進行簡單的修改。
<style name="Widget.SearchView" parent="Widget.AppCompat.SearchView"> <item name="defaultQueryHint">請輸入關鍵字</item> <item name="queryBackground">@drawable/abc_textfield_search_material</item> <item name="submitBackground">@drawable/abc_textfield_search_material</item> <item name="closeIcon">@drawable/abc_ic_clear_mtrl_alpha</item> <item name="searchIcon">@drawable/abc_ic_search_api_mtrl_alpha</item> <item name="searchHintIcon">@drawable/abc_ic_search_api_mtrl_alpha</item> <item name="goIcon">@drawable/abc_ic_go_search_api_mtrl_alpha</item> <item name="voiceIcon">@drawable/abc_ic_voice_search_api_mtrl_alpha</item> <item name="commitIcon">@drawable/abc_ic_commit_search_api_mtrl_alpha</item> </style>通過這個style可以設置searchview的默認hint,EditText的背景和一些icon等等。然后在APP的Theme中添加<item name="searchViewStyle">@style/Widget.SearchView</item>
。 但是現在textview的字體顏色還無法定義??梢栽贏PP的Theme中添加如下屬性設置:
另:Toolbar中如果設置溢出圖標樣式? 這里只說個簡單的,Android系統默認提供兩種樣式分別適配Light和Dark主題,這里只能是在Dark中使用Light樣式的圖標,或者Light中使用Dark圖標,如果超過這兩種就得自己定義了。 方法是添加如下屬性到自己的Theme中
<!--toobar 溢出圖標顏色--> <item name="android:textColorSecondary">@android:color/white</item>新聞熱點
疑難解答