ActionBar中的SearchView drawables显得模糊

时间:2012-12-20 18:04:49

标签: android android-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() {...});
}

一切都很好,除了一件事:在我的华硕平板电脑(TF-201,Android 3.2.1)上,图形模糊:

enter image description here

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

enter image description here

4.1.2模拟器上未再现此问题。我试着只在我的onCreateOptionsMenu()中留下菜单通胀代码,但这没有帮助。

如何解决此问题?

2 个答案:

答案 0 :(得分:4)

所以我打破了解决方案,但是,如果不使用ActionBarSherlock库,它只声明API 14及更高版本的正确兼容性。


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

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

以编程方式创建SearchView

<强> FRAGMENT

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

<强>活性

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

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

行动棒SHERLOCK FRAGMENT

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

行动栏SHERLOCK ACTIVITY

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

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

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

注意这会改变MenuItem的背景颜色,无论是否折叠,例如。通过使用Theme Holo.Light.DarkActionBar,你需要根据你的ActionBar风格使用正确的颜色。

答案 1 :(得分:2)

我遇到了同样的问题,但其他答案没有解决我的问题。我正在从AppCompatActivity扩展我的活动课程。我的搜索视图图标在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;

问题已解决。