我已經在操作欄中實現了一個android搜索視圖。當搜索視圖獲得焦點時,右側的關閉按鈕[x]出現。我查看了其他Android本機應用程序,如聯繫人和Gmail。當搜索視圖獲得焦點時,關閉按鈕不顯示。 如何設置我的搜索視圖的行爲是這樣的?[Android搜索窗口小部件]如何在默認情況下隱藏搜索視圖中的關閉按鈕?
回答
我面臨與android.support.v7.widget.SearchView
相同的問題,並找到了解決方案。首先,在onCreateOptionsMenu
,您可以獲取對搜索查看參考以及其關閉按鈕:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.search, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);
try {
Field searchField = SearchView.class.getDeclaredField("mCloseButton");
searchField.setAccessible(true);
mSearchCloseButton = (ImageView) searchField.get(mSearchView);
} catch (Exception e) {
Log.e(TAG, "Error finding close button", e);
}
}
現在,你可以嘗試修改按鈕。首先,我嘗試使用setVisibility(View.GONE)
隱藏關閉按鈕,但這不起作用,因爲當用戶與SearchView交互時,SearchView會重置其關閉按鈕的可見性。所以我的解決方案是使用一個透明的繪製和禁用關閉按鈕的點擊:
if (mSearchCloseButton != null) {
mSearchCloseButton.setEnabled(false);
mSearchCloseButton.setImageDrawable(getResources().getDrawable(R.drawable.transparent));
}
這篇文章幫助我還有:
http://novoda.com/blog/styling-actionbar-searchview
然而,這是相當哈克說實話。從https://android.googlesource.com/platform/frameworks/support.git/+/master/v7/appcompat/src/android/support/v7/widget/SearchView.java獲取SearchView源並創建您自己的SearchView版本可以隱藏/顯示關閉按鈕,這樣做會更清晰。
更新:
谷歌剛剛宣佈程序兼容性V21,其對於搜索查看小部件的造型改進:
http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html
你可以從搜索查看對象按鈕鏈接(程序兼容性v23.2.1):
searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
ImageView mCloseButton = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
然後你就可以監聽器分配給搜索查看文本更改(搜索查看也改變了按鈕的知名度,但聽者將在後面執行,將覆蓋這些變化):
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
mCloseButton.setVisibility(newText.isEmpty() ? View.GONE : View.VISIBLE);
return false;
}
});
最後,監聽器隱藏圖標時,搜索查看從圖標化狀態展開:
searchView.setOnSearchClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// hide "x" button if there is no text
String query = searchView.getQuery().toString();
mCloseButton.setVisibility(query.isEmpty() ? View.GONE : View.VISIBLE);
}
});
的作品真的很不錯! – 2016-09-10 14:22:58
設置searchView.setIconifiedByDefault(false)
將禁用崩潰搜索視圖,並刪除關閉按鈕。
您也可以使用這個隱藏關閉按鈕
ImageView closeBtn = (ImageView) searchView.findViewById(R.id.search_close_btn);
closeBtn.setEnabled(false);
closeBtn.setImageDrawable(null);
- 1. Eclipse:我如何在默認情況下固定搜索視圖?
- 2. 在zk中搜索窗口小部件
- 3. 如何在隱藏和可見的情況下搜索值?
- 4. 隱藏UITableView中搜索默認
- 5. 在鼠標上隱藏搜索文本框關閉按鈕
- 6. openerp搜索視圖隱藏
- 7. 在搜索視圖中更改默認搜索圖標位置
- 8. 在沒有搜索對象的情況下啓動默認搜索活動
- 9. 如何讓搜索按鈕關閉AlertDialog?
- 10. iPhone:默認隱藏UITableView搜索欄
- 11. 在特定視圖的情況下隱藏部分按鈕
- 12. 搜索查看關閉按鈕被隱藏
- 13. 如何在搜索表單佔位符中添加圖標默認情況下其顯示搜索
- 14. 如何在android web視圖中隱藏搜索結果
- 15. 帶默認搜索按鈕的jqGrid
- 16. 使用搜索查看時隱藏軟鍵盤上的搜索/搜索按鈕?
- 17. Android Stack NullPointer在搜索窗口小部件中選擇建議
- 18. Android Actionbar搜索窗口小部件實現在ListFragment中
- 19. 搜索在監視窗口
- 20. 在SherlockActivity中按下搜索按鈕時關閉軟鍵盤
- 21. WebStorm - 防止搜索窗口關閉
- 22. 在wxpython默認情況下隱藏TextCtrl
- 23. 關閉搜索隱私
- 24. 如何在Java中隱藏JFrame窗口上的默認最小化/最大化和關閉按鈕?
- 25. SQL情況下,搜索
- 26. 如何在android中的操作欄中添加搜索窗口小部件?
- 27. 如何在不關閉的情況下「隱藏()」模式WPF窗口?
- 28. 僅在部分關鍵字的情況下使用NSMutableDictionary搜索
- 29. 如何在不關閉窗口的情況下關閉文檔?
- 30. 按下按鈕隱藏/顯示搜索欄
感謝。我不得不從searchview中刪除關閉按鈕。首先,我嘗試使用'mSearchCloseButton.setVisibility(View.GONE)',但它不起作用。然後我試着設置一個像你一樣透明的drawable,並讓我的目的得到滿足。 – 2015-09-20 11:54:56