有三个放大镜图标。其中两个在 IconizedByDefault 为真时显示(一个在按下之前显示,一个在“提示”中显示),一个在 IconizedByDefault 为假时始终显示。所有字段都是私有的,因此获取它们的方法是通过它们的 xml id。(大部分代码已经在这篇文章的其他答案中单独提及)
当 IconizedByDefault 为 true 时,将提示中的图标(仅在按下图标后可见)更改为:
mSearchSrcTextView = (SearchAutoComplete)findViewById(R.id.search_src_text);
然后执行与 android 源代码中相同的操作:
final int textSize = (int) (mSearchSrcTextView.getTextSize() * 1.25);
newSearchIconDrawable.setBounds(0, 0, textSize, textSize);
final SpannableStringBuilder ssb = new SpannableStringBuilder(" ");
ssb.setSpan(new ImageSpan(newSearchIconDrawable), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
ssb.append(hintText);
mSearchHintIcon 已替换为 newSearchIconDrawable,这是您的新搜索图标。然后设置提示
mSearchSrcTextView.setHint(ssb);
其他 2 个图标位于 中ImageView
,可通过其 ID 找到。对于搜索视图关闭时的图标(当 iconizedByDefault 为 true 时),请执行以下操作:
mSearchButton = (ImageView) findViewById(R.id.search_button);
对于总是出现的那个(如果 iconizedByDefault 为假)
mCollapsedIcon = (ImageView) findViewById(R.id.search_mag_icon);