我的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()
中留下菜单通胀代码,但这没有帮助。
如何解决此问题?
答案 0 :(得分:4)
所以我打破了解决方案,但是,如果不使用ActionBarSherlock库,它只声明API 14及更高版本的正确兼容性。
重要的是连接到应用程序的主题上下文,否则您将获得SearchView(模糊图标)的最低设计
以编程方式创建SearchView
<强> FRAGMENT 强>
SearchView searchView =
new SearchView(getActivity().getActionBar().getThemedContext());
<强>活性强>
SearchView searchView = new SearchView(getActionBar().getThemedContext());
行动棒SHERLOCK FRAGMENT
SearchView searchView =
new SearchView(getSherlockActivity().getSupportActionBar().getThemedContext());
行动栏SHERLOCK ACTIVITY
SearchView searchView = new SearchView(getSupportActionBar().getThemedContext());
在某些情况下,设置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;
问题已解决。