一個搜索查看我有一個像這樣在我的操作欄搜索插件:的樣式在Android操作欄,
(1)如何更改,上面寫着「iPhone」文本的顏色? (2)此外,如果您注意到灰色X - 整個搜索窗口小部件都是該顏色,並且它位於圖標位置。我在Holo.Theme.Light上使用我自己的MOD。
如何在我的styles.xml文件中更改這兩個窗口小部件的樣式(假設這是您對搜索窗口小部件進行更改的位置)?
一個搜索查看我有一個像這樣在我的操作欄搜索插件:的樣式在Android操作欄,
(1)如何更改,上面寫着「iPhone」文本的顏色? (2)此外,如果您注意到灰色X - 整個搜索窗口小部件都是該顏色,並且它位於圖標位置。我在Holo.Theme.Light上使用我自己的MOD。
如何在我的styles.xml文件中更改這兩個窗口小部件的樣式(假設這是您對搜索窗口小部件進行更改的位置)?
你將不得不設置
searchView.setBackgroundColor(Color.WHITE);
SearchViews不那麼定製。
非常有趣,需要試試這個。幾周前我曾用解決方法解決了這個問題......但這非常好。給予好評。 – KickingLettuce 2012-12-17 19:19:15
我解決這個問題的方式是使用Holo.Light.DarkActionBar主題。我不相信你可以輕易地改變搜索部件。
實際上,你可以在'SearchView'中設置'EditText'的文字顏色。但是,正如你所提到的,這不像使用XML風格定義那麼簡單。你甚至可以設置下劃線的顏色。查看[我的回答](http://stackoverflow.com/questions/11085308/changing-the-background-drawable-of-the-searchview-widget)到其他關於'SearchView'自定義。 – vArDo 2012-07-26 16:11:44
這是我認爲這樣做的最好方法。 – 2014-06-30 16:09:36
您可以更改searchview的樣式。下面是一些代碼我用來調整的EditText上,聲音圖標...
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
int searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_plate", null, null);
searchView.findViewById(searchPlateId).setBackgroundResource(R.drawable.textfield_search_selected);
int voiceSearchPlateId = searchView.getContext().getResources().getIdentifier("android:id/submit_area", null, null);
searchView.findViewById(voiceSearchPlateId).setBackgroundResource(R.drawable.textfield_search_right_selected);
// change hint color
int searchTextViewId = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
TextView searchTextView = (TextView) searchView.findViewById(searchTextViewId);
searchTextView.setHintTextColor(getResources().getColor(R.color.light_grey));
[編輯]一個更完整的答案可以在這裏找到:Changing the background drawable of the searchview widget
如何找到這些ID?我想將放大鏡圖標和「x」更改爲深色。 – Vituel 2014-01-03 13:58:23
+1。這幫助了我。但是,不要使用getIdentifier,你可以在ABS的情況下使用ID。 'searchView.findViewById(R.id.abs__search_plate).setBackgroundResource(R.drawable.myBackground);'同樣可以用於提交區域和搜索src文本 – 2014-04-18 15:30:31
如果您在使用程序兼容性庫,那麼解決方案與Jerome的答案有點不同。這裏是我的解決方案
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.main_menu, menu);
restoreActionBar();
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
MenuItem searchMenuItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchMenuItem);
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
SearchView.SearchAutoComplete searchAutoComplete = (SearchView.SearchAutoComplete)searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
searchAutoComplete.setHintTextColor(Color.WHITE);
searchAutoComplete.setTextColor(Color.WHITE);
View searchplate = (View)searchView.findViewById(android.support.v7.appcompat.R.id.search_plate);
searchplate.setBackgroundResource(R.drawable.texfield_searchview_holo_light);
ImageView searchCloseIcon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
searchCloseIcon.setImageResource(R.drawable.clear_search);
ImageView voiceIcon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_voice_btn);
voiceIcon.setImageResource(R.drawable.abc_ic_voice_search);
ImageView searchIcon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon);
searchIcon.setImageResource(R.drawable.abc_ic_search);
return super.onCreateOptionsMenu(menu);
}
我已經花費許多時間這一點,但最後::-)
1)要更改文本顏色:
((EditText)searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text)).setTextColor(Color.WHITE);
2)要更改文本提示:
((EditText)searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text)).setHintTextColor(Color.WHITE);
我愛你的男人。 – 2017-11-11 13:06:51
如果你想要白色文本,你應該擴展一個黑色背景的動作欄主題,如Holo.Theme
或Theme.AppCompat.Light.DarkActionBar
如果您使用支持庫。
無需其他設置。
在onCreateOptionsMenu :
int id = searchView.getContext()
.getResources()
.getIdentifier("android:id/search_src_text", null, null);
TextView textView = (TextView) searchView.findViewById(id);
textView.setTextColor(Color.WHITE);
謝謝,牛軋糖工作 – Herman 2017-01-04 20:21:25
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
// Associate search configuration with the SearchView
SearchManager searchManager =
(SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView =
(SearchView) menu.findItem(R.id.search).getActionView();
searchView.setQueryHint("Client/DOB/PPSN");
searchView.setSearchableInfo(
searchManager.getSearchableInfo(getComponentName()));
// Setting the textview default behaviour properties
int id = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
TextView textView = (TextView) searchView.findViewById(id);
textView.setTextColor(Color.WHITE);
textView.setHintTextColor(Color.WHITE);
// Set the search plate color to white
int linlayId = getResources().getIdentifier("android:id/search_plate", null, null);
View view = searchView.findViewById(linlayId);
Drawable drawColor = getResources().getDrawable(R.drawable.searchcolor);
view.setBackground(drawColor);
return super.onCreateOptionsMenu(menu);
}
現在,這是改變搜索欄
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape >
<solid android:color="#ffffff" />
</shape>
</item>
<!-- main color -->
<item android:bottom="1.5dp"
android:left="1.5dp"
android:right="1.5dp">
<shape >
<solid android:color="#2c4d8e" />
</shape>
</item>
<!-- draw another block to cut-off the left and right bars -->
<item android:bottom="10.0dp">
<shape >
<solid android:color="#2c4d8e" />
</shape>
</item>
</layer-list>
和菜單/菜單的彩鋼板xml文件searchcolor.xml。XML創建行動吧
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/search"
android:icon="@drawable/search"
android:showAsAction="ifRoom"
android:actionViewClass="android.widget.SearchView" />
</menu>
棒棒糖,你可以喜歡這種風格的搜索視圖從博客文章 http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html
values/themes.xml:
<style name=」Theme.MyTheme」 parent=」Theme.AppCompat」>
<item name=」searchViewStyle」>@style/MySearchViewStyle</item>
</style>
<style name=」MySearchViewStyle」 parent=」Widget.AppCompat.SearchView」>
<!-- Background for the search query section (e.g. EditText) -->
<item name="queryBackground">...</item>
<!-- Background for the actions section (e.g. voice, submit) -->
<item name="submitBackground">...</item>
<!-- Close button icon -->
<item name="closeIcon">...</item>
<!-- Search button icon -->
<item name="searchIcon">...</item>
<!-- Go/commit button icon -->
<item name="goIcon">...</item>
<!-- Voice search button icon -->
<item name="voiceIcon">...</item>
<!-- Commit icon shown in the query suggestion row -->
<item name="commitIcon">...</item>
<!-- Layout for query suggestion rows -->
<item name="suggestionRowLayout">...</item>
</style>
有沒有一種方法來使用搜索視圖前棒棒糖造型?比如像KitKat? – 2016-08-04 17:07:59
在xxxActivity.java文件,然後獲取搜索查看搜索:
SearchView searchView = (SearchView)menu.findItem(R.id.my_search_view).getActionView();
int searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_plate", null, null);
// Getting the 'search_plate' LinearLayout.
View searchPlate = searchView.findViewById(searchPlateId);
searchPlate.setBackgroundResource(R.drawable.textfield_searchview);
創建文件res/drawable/texfield_searchview.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true"
android:drawable="@drawable/textfield_search_selected_holo_light" />
<item android:drawable="@drawable/textfield_search_default_holo_light" />
</selector>
SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.search));
searchView.setSubmitButtonEnabled(true); // to enable submit button
ImageView b = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_go_btn);
b.setImageResource(android.R.drawable.ic_menu_search); //to change submit button icon
TextView a=(TextView) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
a.setTextColor(...); //to change color of search text
1.圖標位置*的含義是什麼? 2.你真的想在(2)中改變什麼? X的顏色?下劃線的顏色?都? – vArDo 2012-07-26 15:27:07
嘿,這是舊的,我解決了 - 有點。我把答案放在下面。我主要想改變文本和X的顏色。在圖標位置只是操作欄中的放大鏡。你點擊它,它就像你在上面看到的那樣打開。 – KickingLettuce 2012-07-26 16:04:09
http://stackoverflow.com/posts/12942258/edit這是一個骯髒的黑客,但它的工作 – Pongpat 2012-10-17 20:03:59