【发布时间】:2016-09-23 19:46:10
【问题描述】:
我正在开发一个 android 应用程序并在其中实现了 searchview。我想在初始化时隐藏搜索视图中的关闭按钮,并且只在我开始输入时显示该按钮。为空时隐藏searchview的关闭按钮。
我已经像下面那样做了。
public void initializeSearchView(){
SearchManager searchManager = (SearchManager)mContext.getSystemService(Context.SEARCH_SERVICE);
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(((Activity)mContext).getComponentName()));
mSearchView.setIconifiedByDefault(true);
mSearchView.setIconified(false);
mSearchView.clearFocus();
int searchImgId = mContext.getResources().getIdentifier("android:id/search_mag_icon", null, null);
ImageView searchIconView = (ImageView) mSearchView.findViewById(searchImgId);
if(searchIconView != null){
searchIconView.setImageResource(R.drawable.ic_action_search);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
searchIconView.setLayoutParams(layoutParams);
}
int searchPlateId = mSearchView.getContext().getResources().
getIdentifier("android:id/search_plate", null, null);
View searchPlate = mSearchView.findViewById(searchPlateId);
if (searchPlate != null) {
int searchTextId = searchPlate.getContext().getResources().
getIdentifier("android:id/search_src_text", null, null);
final TextView searchText = (TextView) searchPlate.findViewById(searchTextId);
searchText.setHintTextColor(ContextCompat.getColor(mContext, R.color.gray_stroke_color));
mSearchView.setQueryHint("Search");
int searchCloseBtnId = searchPlate.getContext().getResources().
getIdentifier("android:id/search_close_btn", null, null);
searchCloseBtn = (ImageView) searchPlate.findViewById(searchCloseBtnId);
searchCloseBtn.setVisibility(View.GONE);
searchCloseBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
searchText.setText("");
mSearchView.clearFocus();
}
});
}
mSearchView.setOnQueryTextListener(this);
}
我在 searchview 初始化时将 Visibility GONE 设置为关闭按钮,但它不起作用。我该如何实现这一点,如果有人在这里有想法,请提供帮助。
非常感谢。
【问题讨论】:
标签: android searchview