Android SearchView小部件 - 如何显示它始终展开和关闭问题

时间:2015-12-17 21:47:56

标签: android toolbar searchview

我有一项名为SearchRecipeActivity的活动,其中包括:Toolbar WidgetRecyclerView。在Toolbar内我想添加SearchView Widget,无论何时我进入活动,它都会被扩展。这是我的第一个问题。我设法以某种方式做到了,但看起来它不能正常工作。

  1. 当我第一次进入活动时,SearchView会聚焦([X]     按钮高亮显示为白色,
  2. 当它失去焦点并再次获得焦点时,[X]按钮不会     如同白色一样高而是灰色 - 它没有聚焦?
  3. 第二个与清除搜索文本字段的[X]按钮连接。当我将一些文字放入SearchField时,它会删除所有文本,但是当文本字段为空时,当我点击[X]时,它会完全关闭SearchWidget。我不希望这样,因为此活动仅用于搜索。有办法解决这个问题吗?例如,Twitch app仅在文本位于内部时显示[X]按钮 - 以防止其关闭?

    这是我的问题的图形艺术:D

    enter image description here

    以下是我的文件:

    search_menu.xml

    <menu
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
    
        <item
            android:id="@+id/menu_item_search_widget"
            android:title="@string/action_search"
            android:orderInCategory="0"
            app:showAsAction="always"
            app:actionViewClass="android.support.v7.widget.SearchView" />
    </menu>
    

    SearchActivity.java

    public class SearchRecipeActivity extends AppCompatActivity implements
            SearchView.OnQueryTextListener {
    
        private static final String TAG = SearchRecipeActivity.class.getSimpleName().toString();
    
        private CoordinatorLayout searchRecipeCoordinatorLayout;
        private BroadcastReceiver broadcastReceiver;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_search_recipe);
    
            // Setting Toolbar
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
            getSupportActionBar().setDisplayShowHomeEnabled(true);
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    
            // Setting Up CoordinatorLayout
            searchRecipeCoordinatorLayout = (CoordinatorLayout) findViewById(
                    R.id.activity_search_coordinator_layout);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.search_menu, menu);
    
            MenuItem searchItem = menu.findItem(R.id.menu_item_search_widget);
            SearchView searchView = (SearchView) searchItem.getActionView();
            searchView.setIconified(false);
            searchView.setOnQueryTextListener(this);
    
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
                case android.R.id.home: {
                    finish();
    
                    return true;
                }
            }
    
            return super.onOptionsItemSelected(item);
        }
    
        @Override
        public boolean onQueryTextChange(String query) {
            return false;
        }
    
        @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }
    }
    

0 个答案:

没有答案