【问题标题】:searchview not gain focus but keyboard openssearchview 没有获得焦点但键盘打开
【发布时间】:2016-08-09 14:18:21
【问题描述】:

我正在使用 searchview 进行搜索功能我的问题是,当我点击搜索图标时,键盘会打开但 searchview 没有获得焦点下面是我的代码

menu.xml

 <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
        <item
            android:id="@+id/send_invitation"
            android:icon="@drawable/send_icon_invite_participant"
            android:orderInCategory="93"
            android:title="@string/invitation"
            app:showAsAction="always">
        </item>

        <item
            android:id="@+id/search"
            android:orderInCategory="100"
            app:actionViewClass="android.support.v7.widget.SearchView"
            android:icon="@drawable/search_icn"
            android:title="@string/search"
            app:showAsAction="always"/>

</menu>

下面是方法的代码

@Override
public void onCreateOptionsMenu(final Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.invite_participant, menu);
    final MenuItem searchItem = menu.findItem(R.id.search);
    SearchManager searchManager = (SearchManager) activity.getSystemService(Context.SEARCH_SERVICE);
    final SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
    EditText searchEditText = (EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
    searchEditText.setTextColor(getResources().getColor(R.color.colorAccent));
    searchEditText.setHintTextColor(getResources().getColor(R.color.colorAccent));
    searchItem.expandActionView();
    ImageView searchIcon = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_button);
    searchIcon.setImageResource(R.drawable.search_icn);
    ImageView searchCloseIcon = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
    searchCloseIcon.setImageResource(R.drawable.reject_icon_notification);
    if (searchView != null) {
        searchView.setSearchableInfo(searchManager.getSearchableInfo(activity.getComponentName()));
        searchView.setOnSearchClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setItemsVisibility(menu, searchItem, false);
            }
        });
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                searchView.clearFocus();
                return true;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                if (adapter != null) {
                    adapter.fliter(newText);
                }
                return false;
            }
        });
        searchView.setOnCloseListener(new SearchView.OnCloseListener() {
            @Override
            public boolean onClose() {
                setItemsVisibility(menu, searchItem, true);
                return false;
            }
        });
    }
}

private void setItemsVisibility(Menu menu, MenuItem exception, boolean visible) {
    for (int i=0; i<menu.size(); ++i) {
        MenuItem item = menu.getItem(i);
        if (item != exception) item.setVisible(visible);
    }
}

我无法找到为什么它不集中请帮助我找出我做错的地方任何帮助表示赞赏。

【问题讨论】:

    标签: android searchview android-searchmanager


    【解决方案1】:

    您可以使用 searchview 添加这些行以获得焦点。

     searchView.setFocusable(true);
        searchView.requestFocus();
        searchView.requestFocusFromTouch();
    

    如果它不起作用,那么首先展开搜索视图然后请求焦点。

    【讨论】:

    • 非常感谢您对我应该添加此行的位置的回复
    【解决方案2】:

    您可以通过在 Activity 的 onCreate 方法中添加以下代码来实现它。

    getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    

    或者通过在您的 AndroidManifest 文件中添加这一行

    android:windowSoftInputMode="stateHidden"
    

    编辑:

    试试这样的

    getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
    

    【讨论】:

    • 不幸的是这是一个片段类
    • @Mr 7 我通过更改类别值的顺序来解决它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-28
    • 1970-01-01
    • 2023-04-03
    • 2014-11-18
    • 2019-09-13
    • 1970-01-01
    • 2011-05-25
    相关资源
    最近更新 更多