解決toolbar中searchview不能改變圖標

最近在用toolbar,然后在使用searchview搜索的時候,遇到一個問題,無論如何,那個toolbar中通過menu還是不能修改searchview的圖標和其他一些顏色屬性的。

如圖:


這個icon修改不了


字體也是黑色的,還有那個X刪除圖標

解決方法:

//通過找到search view里面的一個叫做appcompatImageViewbutton來修改圖標和顏色

AppCompatImageViewbutton=(AppCompatImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_button);

button.setImageResource(R.mipmap.ic_search);

//搜索的那個X的刪除圖標也是可以通過這種方式來修改的

//下面是在搜索欄的字體,設置為白色,默認也是黑色

TextViewtextView=(TextView)searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);

textView.setTextColor(Color.WHITE);


解決思路:

如果你看到上面的解決方法已經解決了問題,那就祝賀你。如果有興趣的話可以看看這里的解決思路,它可以幫助你在以后遇到其他問題的時候,根據相同的思路來思考解決問題

這個問題肯定大家也會遇到,因為我在網上搜解決方法的時候也看到了許多的問題貼,甚至是stackoverflow上面也搜過,也有一些解決方案。

最多的三種:

第一種

int search_mag_icon_id = mSearchView.getContext().getResources().getIdentifier("android:id/search_mag_icon", null, null);

ImageView mSearchViewIcon = (ImageView) mSearchView.findViewById(search_mag_icon_id);// 獲取搜索圖標

mSearchViewIcon.setImageResource(R.drawable.ic_menu_search_holo_dark);

mSearchView.setIconifiedByDefault(false);(設置搜索圖標在編輯框外,ture時在框內)。

用此方法修改時成功了,但是只要一設置mSearchView.setIconifiedByDefault(true),搜索圖標就右成了系統的圖標。

第二種


通過修改主題樣式

第三種


重寫一個style


然后設置toolbar theme樣式(API21以上)



第一種方法我試過,不行,會報空指針,因為通過identifier("")來找到對應的id,我調試過,id能夠找到,但是不確定是不是對的,不過你還是不能通過searchview.findviewbyid 來找到所謂的imageview textview什么的,空指針。

當時我就照著這種思路,然后在調試的時候去看了searchview的mChildern、mChildren的mChildren,子孫都去找了,然后看了一下他們的id好像已經不是所謂的android:id/search_mag_icon 了,而是app:id/search_mag_icon, 不信你可以看看

但是,即便是改成后面那個也不行,還是找不到,依舊空指針,我也不知道怎么回事了。

第二種我也試過,對于我而言不行。大家都知道現在基本很多都是用appcompatActivity了,所以現在所用的主題一般也都是appcompat相關的主題了。沒有誰還在用老主題的。

即便你還在用老主題,但是,它也只是根據老主題的兩種 holo.light 、dark來改變searchview 那個搜索圖標的顏色,白色、黑色,但是根本滿足不了我們的要求。

還有,如果要用這種修改主題的方式的話,就必須使用actionbar,但是你知道現在我們都是用toolbar來替換actionbar,這個沒話說,如果在activity中直接使用setActionbar就可以了。

但是,我們在fragment里面使用toolbar呢?那就不行了,因為多數情況下,我們的主題都是 noActionbar的,因為我們要自定義toolbar呀。而且對于現在這種 一個activity下面裝多個fragment來實現那種底部導航的潮流結構中,一般我們的每個fragment的toolbar都是不一樣的,所以不可能用一個activity的toolbar來動態切換或者改變,那樣太復雜了。

第三種,親測過,也是沒有什么用,因為其實他修改的是toolbar的字體顏色,還有一些默認圖標的顏色,但是它不可以修改,searchview展開之后的搜索的框中的字體顏色

所以的所以,總而又言之就是,上述三種親測,不適用。

解決核心思路:

重點來了,既然主題什么的不行,那我們可以依照第一種方法的思路來換個角度試試。

很多時候你會發現,官方的一些組件,里面有很多成員變量或者里面有很多子view,但是只暴露出很少的方法去讓你修改一些屬性。很多是private的方法,這時候你會想如果是public該多好啊。

所以,你就會想要去繼承重寫什么的,但是那樣我覺得有點麻煩。

于是,我就想,你看,如果找到里面的子view,那不就可以通過子view來修改里面的內容了啊。比如,searchview里面的那個放大鏡的那個圖標,肯定應該是一個imageview吧,如果我們能通過什么方式找出來,那么就可以修改了嘛。

很常見的就是通過findviewbyId,所以就去找ID吧。

那么現在就要去看看源碼了,看了searchview的源碼。


上面3個依次就是輸入的字體顏色、放大鏡圖標、關閉圖標

id的名字你也看見了,不過它們沒有在自己的工程里,它是在support.v7里面的。

于是去里面找,找android.support.v7.appcompat.R.id.search_button就能找到了,

基本就大功告成了,然后你就通過search findviewbyid 找出來,然后就可以隨意設置了,真爽!!

其他的一些子view也是一樣,都可以找出來然后自己隨意改!

好爽!總結一下:

如果一個組件是很多子view混合構成的,你就可以通過找到子view,然后去修改子view,就能達到修改組件的效果了。

希望對大家有用,謝謝

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,362評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,013評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,346評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,421評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,146評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,534評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,585評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,767評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,318評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,074評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,258評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,828評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,486評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,916評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,156評論 1 290
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,993評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,234評論 2 375

推薦閱讀更多精彩內容