【问题标题】:How to add search into action bar如何将搜索添加到操作栏中
【发布时间】:2023-04-10 12:50:01
【问题描述】:

知道任何人我如何在 Android 上的 action bar 中添加 searchview? 我尝试了很多例子,我在谷歌上搜索了很多时间,但我没有找到解决我的问题的方法......我找到了如何将搜索放入操作栏中,但之后我可以'不要使用我的搜索...我可以打开它。

这是活动:

public class SearchActivity extends Activity implements SearchView.OnQueryTextListener {


    private SearchView mSearchView;
    private ListView mListView;
    private final String[] mStrings = Cheeses.sCheeseStrings;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
        setContentView(R.layout.search_activity);

        mSearchView = (SearchView) findViewById(R.id.search_view);
        mListView = (ListView) findViewById(R.id.list_view);
        mListView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mStrings));
        mListView.setTextFilterEnabled(true);
        ActionBar actionBar = getActionBar();

        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
        actionBar.setDisplayShowTitleEnabled(true);
        actionBar.setTitle("");
        actionBar.setCustomView(mSearchView);
        mSearchView.setQuery("", true);
        mSearchView.setFocusable(true);
        mSearchView.setIconified(false);
        actionBar.setDisplayHomeAsUpEnabled(true);
        setupSearchView();
    }

    private void setupSearchView() {
        mSearchView.setIconifiedByDefault(false);
        mSearchView.setOnQueryTextListener(this);
        mSearchView.setSubmitButtonEnabled(true);
        mSearchView.setQueryHint("Search Here");
    }

    public boolean onQueryTextChange(String newText) {
        if (TextUtils.isEmpty(newText)) {
            mListView.clearTextFilter();
        } else {
            mListView.setFilterText(newText.toString());
        }
        return true;
    }

    public boolean onQueryTextSubmit(String query) {
        return false;
    }
}

这是我的result,带有单独的搜索栏操作栏。 所以如果有人知道我该如何解决这个问题,请告诉我,我将非常感谢如何帮助我。

【问题讨论】:

    标签: android android-activity android-actionbar searchview android-search


    【解决方案1】:

    覆盖 onCreateOptionsMenu 方法以设置您的操作栏搜索。这段代码 sn-p 应该可以帮到你。

    @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.my_list, menu);
            final MenuItem searchItem = menu.findItem(R.id.action_search);
            final SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
            searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                @Override
                public boolean onQueryTextSubmit(String query) {
    
                    //Fetch the data remotely
                    FetchData(query);
    
                    //Reset the SearchView
                    searchView.clearFocus();
                    searchView.setQuery("", false);
                    searchView.setIconified(true);
                    searchItem.collapseActionView();
    
                    //Set Activity title to search query
                    MainActivity.this.setTitle(query);
    
                    return true;
                }
    
                @Override
                public boolean onQueryTextChange(String newText) {
                    return false;
                }
            });
            return true;
        } 
    

    希望这会有所帮助。

    【讨论】:

    • 你能改变这个代码为我工作吗?因为我尝试使用它并且我有很多错误......例如,我的 searchView 将始终为 NULL。或者 FetchData(query) 给我错误,而且我不使用任何查询...我只有一个带有名称的字符串。如果你能为我做到这一点,我将非常感激。
    • 是的,我已经更改为在 searchItem 上使用我的 R.id,我不让你的
    猜你喜欢
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    相关资源
    最近更新 更多