现在在这个问题上花了太长时间。已经解决了大部分问题,但仍在努力寻找搜索提示图标。经过广泛搜索后,这段代码可以在我的片段中使用
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
mSearchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
mSearchView.setIconifiedByDefault(true);
int id = mSearchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
mSearchViewTextView = (TextView) mSearchView.findViewById(id);
mSearchViewTextView.setTextColor(Color.WHITE);
mSearchViewTextView.setHintTextColor(Color.WHITE);
mSearchViewTextView.setBackgroundResource(R.drawable.action_textfield_search_alpha);
mSearchViewSsb = new SpannableStringBuilder(" ");
mSearchViewSsb.append(getResources().getString(R.string.fragment_friend_add_search_hint));
Drawable searchHintIcon = ContextCompat.getDrawable(MyApplication.getContext(), R.drawable.action_search);
int textSize = (int) (mSearchViewTextView.getTextSize() * 1.25);
searchHintIcon.setBounds(0, 0, textSize, textSize);
mSearchViewSsb.setSpan(new ImageSpan(searchHintIcon), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
mSearchViewTextView.setText(mSearchViewSsb);
int id1 = android.support.v7.appcompat.R.id.search_close_btn;
ImageView searchCloseIcon = (ImageView) mSearchView.findViewById(id1);
searchCloseIcon.setImageResource(R.drawable.action_close);
int id2 = android.support.v7.appcompat.R.id.search_button;
ImageView searchIcon = (ImageView) mSearchView.findViewById(id2);
searchIcon.setImageResource(R.drawable.action_search);
super.onCreateOptionsMenu(menu, getActivity().getMenuInflater());
mSearchView.setOnSearchClickListener(...);
mSearchView.setOnQueryTextListener(...);
}
但是,当我在onCreateOptionsMenu中调用它时,它只能工作一次。我试图在setOnQueryTextListener中重用它,但无论我做什么,应用程序然后崩溃或只是忽略更改。
此外,当设置一次好奇的是你第一次按下取消按钮两次时,第一次按下取消按钮时,SearchView TextView具有所有增强功能,但SearchHint图标会返回到它的原始形式。
我需要的是SearchHint图标为白色。
我的主题设置为Theme.AppCompat.Light.DarkActionBar
答案 0 :(得分:0)
如果您只想将图标设为白色,可以将以下代码添加到菜单文件
<item
android:id="@+id/action_search"
android:icon="@drawable/abc_ic_search_api_mtrl_alpha"
android:title="@string/search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="always|collapseActionView"/>