首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SearchView绘图在ActionBar中显示模糊

SearchView绘图在ActionBar中显示模糊
EN

Stack Overflow用户
提问于 2012-12-20 18:04:48
回答 2查看 1.8K关注 0票数 8

我的ActionBar的菜单布局如下:

代码语言:javascript
运行
复制
<?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>

下面是设置代码:

代码语言:javascript
运行
复制
@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,Android3.2.1)上,图形模糊:

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

此问题不在4.1.2仿真器上重现。我试着在我的onCreateOptionsMenu()中只保留菜单通胀代码,但这并没有帮助。

如何解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-21 08:24:11

所以我把这个解决方案搞砸了,但是,如果不使用ActionBarSherlock库,它只为API14和更高版本声明了正确的兼容性。

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

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

以编程方式创建SearchView

片段

代码语言:javascript
运行
复制
SearchView searchView =
                new SearchView(getActivity().getActionBar().getThemedContext());

活性

代码语言:javascript
运行
复制
SearchView searchView = new SearchView(getActionBar().getThemedContext());

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

动作条夏洛克片段

代码语言:javascript
运行
复制
SearchView searchView = 
  new SearchView(getSherlockActivity().getSupportActionBar().getThemedContext());

动作栏神探夏洛克活动

代码语言:javascript
运行
复制
SearchView searchView = new SearchView(getSupportActionBar().getThemedContext());

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

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

注意到,这改变了MenuItem的背景色,无论是否折叠,以及例如。通过使用主题Holo.Light.DarkActionBar,您需要使用正确的颜色,根据您的ActionBar风格。

票数 4
EN

Stack Overflow用户

发布于 2015-12-19 15:03:17

我也经历过同样的问题,但其他的答案并没有解决我的问题。我正在从AppCompatActivity扩展我的活动类。我的搜索视图图标在Android4.4上看起来很模糊。*在Android5.*上它看起来很好,没有任何问题。

我将xml更改为:

代码语言:javascript
运行
复制
  <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" />

和进口

代码语言:javascript
运行
复制
import android.support.v7.widget.SearchView;

而不是import android.widget.SearchView;

问题解决了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13977952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档