搜索视图消失(图标)

时间:2017-11-14 17:16:16

标签: android searchview

我有一个有趣的问题 - 虽然这可能是预期的行为?我的工具栏中有一个SearchView,它运行得很好,直到我输入搜索然后关闭它,此时搜索图标消失,再次搜索的能力丢失。

此行为仅在启动搜索查询时发生 - 因此,如果我输入搜索文本,清除搜索,然后关闭它,图标就在那里。但如果我用它中的数据关闭它,那么Icon就会消失。它不是文字颜色 - 我点击了,似乎没有任何东西。

以下是我所谈论的一些照片:

  1. 搜索在那里:
  2. enter image description here

    1. 输入搜索,查询:
    2. enter image description here

      1. 关闭SearchView,图标消失
      2. enter image description here

        菜单:

        <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);
        }
        

1 个答案:

答案 0 :(得分:1)

问题是这段代码:

position

隐藏了键盘和图标。