我有一个有趣的问题 - 虽然这可能是预期的行为?我的工具栏中有一个SearchView,它运行得很好,直到我输入搜索然后关闭它,此时搜索图标消失,再次搜索的能力丢失。
此行为仅在启动搜索查询时发生 - 因此,如果我输入搜索文本,清除搜索,然后关闭它,图标就在那里。但如果我用它中的数据关闭它,那么Icon就会消失。它不是文字颜色 - 我点击了,似乎没有任何东西。
以下是我所谈论的一些照片:
菜单:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/library_forms_refresh"
android:orderInCategory="100"
android:showAsAction="always|withText"
android:icon="@drawable/ic_action_refresh"
android:title="refresh"/>
</menu>
代码如下所示:
import android.widget.SearchView;
@Override
public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) {
menu.clear();
mMenu = menu; // remember so we can get to later.
inflater.inflate(R.menu.library_forms, menu);
(removed some code not related to this)
// Implementing ActionBar Search inside a fragment
MenuItem item = menu.add("Search");
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
sv = new SearchView(getActivity());
// If we are on a Phone, make the search an icon, otherwise show it all
if (GlobalState.getInstance().isTwoPane == true) {
sv.setIconifiedByDefault(false);
}
else {
sv.setIconifiedByDefault(true);
}
sv.setFocusable(false);
// modifying the text inside edit text component
int id = sv.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
TextView textView = (TextView) sv.findViewById(id);
textView.setHint("Form or Reference Number");
textView.setHintTextColor(Color.WHITE);
textView.setTextColor(Color.WHITE);
// Change the Icon color
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
int searchButtonId = sv.getContext().getResources().getIdentifier("android:id/search_button", null, null);
ImageView searchButton = (ImageView) sv.findViewById(searchButtonId);
searchButton.setImageTintList(ColorStateList.valueOf(Color.WHITE));
}
// implementing the listener
sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
Handler handler = new Handler();
@Override
public boolean onQueryTextSubmit(String s) {
handler.removeCallbacksAndMessages(null);
if (s != null && s.trim().length() > 0)
{
searchFilter = s;
// Delay the lookup by 800 ms
handler.postDelayed(new Runnable() {
@Override
public void run() {
// do some stuff here...
}
}, 800);
}
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
// If the string is empty, reload the form
if (newText == null || newText.trim().length() == 0)
{
searchFilter = null;
// do some stuff here...
// Hides the soft keyboard
sv.setVisibility(View.INVISIBLE);
sv.setVisibility(View.GONE);
}
else {
onQueryTextSubmit(newText);
}
return true;
}
});
item.setActionView(sv);
}
答案 0 :(得分:1)
问题是这段代码:
position
隐藏了键盘和图标。