在Android操作栏中设置SearchView样式

The*_*ter 33 search android styles searchview

我的Action Bar中有一个搜索小部件,如下所示:

在操作栏中搜索小组件

(1)如何更改"iPhone"文本的颜色?

(2)此外,如果您注意到灰色X - 整个搜索小部件也是该颜色,当它处于图标位置时.我在Holo.Theme.Light并使用我自己的mods.

如何在styles.xml文件中更改窗口小部件的这两种样式(假设您在哪里对搜索窗口小部件进行更改)?

小智 50

我一直花费很多时间,但终于:-)

1)要更改文字颜色:

((EditText)searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text)).setTextColor(Color.WHITE);
Run Code Online (Sandbox Code Playgroud)

2)更改文本提示:

((EditText)searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text)).setHintTextColor(Color.WHITE);
Run Code Online (Sandbox Code Playgroud)


Abd*_*man 15

如果您正在使用appcompat库,那么解决方案与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);
}
Run Code Online (Sandbox Code Playgroud)

  • 我们很懒惰,不喜欢以下链接。请在您的答案中包含解决方案,而不仅仅是链接。 (2认同)

Jer*_*VDL 13

您可以更改搜索视图的样式.这是我用来调整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));
Run Code Online (Sandbox Code Playgroud)

[edit]此处提供了更完整的答案:更改searchview小部件的背景可绘制内容


lok*_*oko 9

你必须设置

searchView.setBackgroundColor(Color.WHITE);
Run Code Online (Sandbox Code Playgroud)

SearchViews不是那么可定制的.


QAM*_*MAR 7

从Lollipop开始,你可以在博客文章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>
Run Code Online (Sandbox Code Playgroud)