您好,登錄后才能下訂單哦!
這篇文章主要介紹了Android中SearchView不顯示搜索icon怎么辦,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
背景:
之前碰到了一個(gè)頁面展示問題,SearchView放在Toolbar里面,展示在頁面頂部,發(fā)現(xiàn)進(jìn)入這個(gè)頁面后,左上角是箭頭圖標(biāo)(表示點(diǎn)擊返回),中間區(qū)域就是搜索欄,不過看到會(huì)顯示搜索icon?感覺額外丑陋,就想要把它隱藏掉,找了一圈沒有找到如何隱藏Android中android.support.v7.widget.SearchView
的icon,只好自己慢慢研究,手動(dòng)調(diào)試觀察效果了。
解決辦法:
經(jīng)過一段時(shí)間的調(diào)試,得出了結(jié)論,先給出方案。
final ImageView searchIcon = (ImageView) mSearchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon); mSearchView.post(new Runnable() { @Override public void run() { searchIcon.setImageDrawable(null); searchIcon.setVisibility(View.GONE); } });
接著從android.support.v7.widget.SearchView的源碼中,找找原因。
private void updateViewsVisibility(final boolean collapsed) { mIconified = collapsed; // Visibility of views that are visible when collapsed final int visCollapsed = collapsed ? VISIBLE : GONE; // Is there text in the query final boolean hasText = !TextUtils.isEmpty(mSearchSrcTextView.getText()); mSearchButton.setVisibility(visCollapsed); updateSubmitButton(hasText); mSearchEditFrame.setVisibility(collapsed ? GONE : VISIBLE); final int iconVisibility; if (mCollapsedIcon.getDrawable() == null || mIconifiedByDefault) { iconVisibility = GONE; } else { iconVisibility = VISIBLE; } mCollapsedIcon.setVisibility(iconVisibility); updateCloseButton(); updateVoiceButton(!hasText); updateSubmitArea(); }
updateViewsVisibility()
方法很關(guān)鍵,會(huì)被執(zhí)行多次,這個(gè)方法就決定了mCollapsedIcon是否顯示隱藏,通過分析,得出需要將mCollapsedIcon對(duì)應(yīng)的Drawable設(shè)置為null,mCollapsedIcon.setVisibility(iconVisibility)
才會(huì)隱藏搜索圖標(biāo)。代碼比較簡單,主要是要有意識(shí)的去翻看源碼,看看內(nèi)部實(shí)現(xiàn)。
mCollapsedIcon = findViewById(R.id.search_mag_icon);
還可以找到SearchView對(duì)應(yīng)的xml布局文件,路徑是appcompat-v7/res/layout/abc_search_view.xml
到此問題完美解決。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Android中SearchView不顯示搜索icon怎么辦”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。