ActionBar中的SearchView图标模糊不清

8
我有以下菜单布局用于我的ActionBar:

我有以下菜单布局用于我的ActionBar:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item 
        android:id="@+id/itemSearch"
        android:icon="@drawable/actionbar_icon_search"
        android:showAsAction="ifRoom|collapseActionView"
        android:actionViewClass="android.widget.SearchView" 
        android:title="Search"/>
</menu>

以下是设置代码:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.actionbar_default, menu);

    SearchView searchView=(SearchView) menu.findItem(R.id.itemSearch).getActionView();
    int searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
    View searchEditText = searchView.findViewById(searchPlateId); 
    ((TextView) searchEditText).setTextColor(Color.WHITE);
    searchView.setOnCloseListener(new OnCloseListener() {...});
    searchView.setOnQueryTextListener(new OnQueryTextListener() {...});
}

除了一个问题,一切都正常:在我的Asus平板电脑(TF-201,Android 3.2.1)上,图形模糊:

enter image description here

如果我移除 android:actionViewClass="android.widget.SearchView",一切看起来正常:

enter image description here

这个问题在4.1.2模拟器上没有复现。我尝试只保留菜单膨胀代码在我的onCreateOptionsMenu()中,但是没有帮助。

我该如何解决这个问题?


你是如何解决这个问题的? - Tolgay Toklar
@TolgayToklar 不,我没有。被接受的答案对你不起作用吗? - Andrii Chernenko
没有解决。后来我通过扩展appcombat v7类中的searchview来解决了这个问题。 - Tolgay Toklar
@TolgayToklar,请随意将您的解决方案发布为答案。被采纳的答案现在可能已经过时了。 - Andrii Chernenko
2个回答

4

我是一名有用的助手,可以翻译您需要的内容。以下为需要翻译的it技术相关内容:

所以我解决了问题,但它仅在API 14及以上版本中声明正确的兼容性,如果不使用ActionBarSherlock库。


第一个解决方案(API 14+)

重要的是连接到应用程序的主题上下文,否则您将获得最低可能的SearchView设计(模糊的图标)

通过编程方式创建SearchView

FRAGMENT

SearchView searchView =
                new SearchView(getActivity().getActionBar().getThemedContext());

活动

SearchView searchView = new SearchView(getActionBar().getThemedContext());

第二种解决方案(ABS兼容,API 8+)

ACTION BAR SHERLOCK FRAGMENT

SearchView searchView = 
  new SearchView(getSherlockActivity().getSupportActionBar().getThemedContext());

操作栏Sherlock活动

SearchView searchView = new SearchView(getSupportActionBar().getThemedContext());

第三种解决方案(API 11+)

在某些情况下,设置SearchView.setBackgroundColor(int color)可以使图标显得不那么模糊,尝试使用Color.WHITEColor.BLACK

注意,这会改变MenuItem的背景颜色,无论是展开还是折叠,并且通过使用Theme Holo.Light.DarkActionBar,你需要根据你的ActionBar样式使用正确的颜色。


2

我遇到了同样的问题,但是其他答案没有解决我的问题。我将我的activity类从AppCompatActivity扩展。我的SearchView图标在Android 4.*上看起来模糊,在Android 5.*上则没有任何问题。

我将我的xml更改为:

  <item android:id="@+id/action_search"
      android:icon="@drawable/ic_search_white_24dp"
      app:showAsAction="always"
      app:actionViewClass="android.support.v7.widget.SearchView"
      android:iconifiedByDefault="true" />

并且导入

import android.support.v7.widget.SearchView;

不再使用 import android.widget.SearchView;

问题解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接