我知道这个问题已经有很多答案了,如果我没有尝试过这里看到的所有内容,我也不会创建另一个线程。无论如何,问题非常简单。解决方案可以来自XML样式或Java代码(两种解决方案都可以)。我将展示我尝试解决它的所有(大部分)方法。
首先,搜索视图图标似乎是由代码不可变的,因为我无法从中更改任何内容。我的搜索视图在menu.xml
中声明为:
<item android:id="@+id/icon_search"
android:title="Searchador"
android:icon="@drawable/ic_search_black_24dp" <!-- icon not used by searchview anyway -->
android:showAsAction="always"
android:actionViewClass="android.widget.SearchView"
/>
在我的onCreateOptionsMenu
中,我有这个
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchMenuItem = menu.findItem(R.id.icon_search);
searchView = (SearchView) searchMenuItem.getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setSubmitButtonEnabled(false);
searchView.setOnQueryTextListener(this);
MenuTint.colorIcons(this, menu, Color.BLUE);
return true;
MenuTint.colorIcons(this, menu, Color.BLUE);
是我从一个特殊的类这里中找到的,它基本上可以改变所有图标的颜色,但不幸的是对于搜索视图图标无效。
然后我找到一些答案建议使用这样的样式
<style name="SearchViewStyle" parent="Widget.AppCompat.SearchView">
<!-- changing my icon, its color and stuff.. -->
<item name="searchIcon">@drawable/ic_search</item></style>
但是我一直遇到错误:No resource found that matches the given name 'Widget.AppCompat.SearchView'.
后来我发现应该添加android-support-app-compat
项目库,而不仅仅是.jar
文件。但这并没有起作用。我的意思是,导入成功了,但错误仍然存在。之后,我在某处找到了一些信息,说我应该将project.properties
从target=android-19更改为21(或更高版本),但这并没有解决“未找到资源”的错误。
所以,我在这个简单的细节上卡住了,需要改变搜索视图的颜色。
此外,虽然这不完全是同样的问题,但我相信它可能通过相同的方式解决,所以我在这里包含了这个问题:我想改变图标之间的距离。有人提出了以下解决方案:
<style name="ActionButtonStyle" parent="AppBaseTheme">
<item name="android:minWidth">0dip</item>
<item name="android:paddingLeft">0dip</item>
<item name="android:paddingRight">0dip</item>
</style>
但最终我得到了this。
正如您所看到的,这种方法仅适用于我的自定义图标,而不适用于搜索视图图标,也不适用于菜单溢出图标。我希望能够平等地改变所有图标之间的距离。