SearchView在ActionBar中的图标vom AppCompat总是有一个阴影

时间:2014-02-20 12:20:42

标签: android android-actionbar searchview android-appcompat

我在AppCompat Actionbar中包含了一个SearchView,但它的图标总是有阴影。

对于其他图标,我使用的是the Android Downloads page中没有阴影的图标,实际上我也尝试将图标指定给SearchViewandroid:icon="@drawable/ic_action_search",但这不是不要改变图标。

search icon with shadow

我的研究表明,实际上ab_ic_search.png使用了android-support-v7-appcompat.jar而我的android:icon="@drawable/ic_action_search"被忽略了。

我尝试了各种方法,例如尝试替换onPrepareOptionsMenu中的图像(通过尝试查找ImageView)或通过SearchView的自定义子类,但无济于事。

任何想法如何解决?基本上我只想让我的图标统一,我是否必须为所有其他图标添加阴影?可能无论如何我都无法为那些“三个点”添加阴影?

1 个答案:

答案 0 :(得分:8)

感谢this blogpost,我设法构建了我的解决方案:

public boolean onCreateOptionsMenu(Menu menu) {
    // the search view is in the mymenu.xml
    inflater.inflate(R.menu.mymenu, menu);

    // now that it is inflated we can get the item
    MenuItem item = menu.findItem(R.id.action_find);

   // and through it the actionview
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
    Drawable searchIcon = getActivity().getResources().getDrawable(R.drawable.ic_action_search); // the new icon

    // and now we search within the view for the "bad" image
    ImageView collapsedSearchIcon = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_button);

    // and finally replace it
    collapsedSearchIcon.setImageDrawable(searchIcon);
}