8

我的 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)上,图形模糊:

在此处输入图像描述

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

在此处输入图像描述

在 4.1.2 模拟器上不会重现此问题。我尝试只在我的菜单中留下通货膨胀代码,onCreateOptionsMenu()但这没有帮助。

我该如何解决?

4

2 回答 2

4

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


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

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

以编程方式创建 SearchView

分段

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

活动

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

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

动作条 Sherlock 片段

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

动作条夏洛克活动

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

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

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

请注意,无论是否折叠,这都会更改 MenuItem 的背景颜色,例如。通过使用 Theme Holo.Light.DarkActionBar,您需要根据您的 ActionBar 样式使用正确的颜色。

于 2013-06-21T08:24:11.353 回答
2

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

问题已解决。

于 2015-12-19T15:03:17.020 回答