android - SearchView 中的文本后光标闪烁而不显示软键盘

标签 android searchview

我试图模仿 gmail 应用程序处理搜索的方式,如下所示:

enter image description here

如上所示,searchView 中的搜索查询后面有一个(蓝色)闪烁的光标。

我各自的代码如下所示:

SearchReslutActivity.class

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu, menu);

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    searchView.setQuery(getIntent().getStringExtra(SearchManager.QUERY), false);
    searchView.setIconified(false);
    searchView.clearFocus();

    return true;
}

menu/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/search"
    android:title="@string/search_title"
    app:actionViewClass="android.support.v7.widget.SearchView"
    app:showAsAction="always" /> </menu>

xml/searchable.xml

<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:hint="@string/hint"
android:includeInGlobalSearch="true"
android:inputType="textCapWords"
android:label="@string/app_name"
android:searchSuggestAuthority="com.webaddress.myproject.data.Provider"
android:searchSuggestIntentAction="android.intent.action.VIEW"
android:searchSuggestIntentData="content://com.webaddress.myproject.data.Provider/table"
android:searchSuggestSelection=" ?"
android:searchSuggestThreshold="1" />

上面的代码实现了与 gmail 应用程序中显示的相同的外观除了有一个闪烁的光标。如何添加这样一个闪烁的光标而不请求将焦点放在 searchView 上(这又会使软键盘再次弹出)?

谢谢!

最佳答案

onCreate()中添加此代码

searchView.setOnFocusChangeListener(new View.OnFocusChangeListener() {

      @Override
      public void onFocusChange(View v, boolean hasFocus) {

          if (!searchView.hasFocus()) {
              //this if condition is true when searchview lost focus...
              int searchSrcText = searchView.getContext().getResources()
                  .getIdentifier("android:id/search_src_text", null, null);
              EditText editText = (EditText) searchView.findViewById(searchSrcText);
              editText.setCursorVisible(true);
              searchView.setActivated(true);
              searchView.setPressed(true);
          }
      }
});

关于android - SearchView 中的文本后光标闪烁而不显示软键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42970994/

相关文章:

iphone - LLVM IR(中间表示)可以用于创建跨平台(iphone 和 Android)ARM 可执行文件吗?

java - 登录 Android 应用程序

android - 在 AppCompat 工具栏中单击时搜索 View 无响应

android - 是否可以从安卓平板电脑截屏到智能板或其他安卓平板电脑

android - 如何处理不同的生日格式? Skype 于 1970 年 1 月 1 日回归

android - Kotlin Coroutines 在 Android 中的正确方式

android - searchview 不再关注方向变化

java - 使用 SearchView android studio 在工具栏中留下空间

android - 为 SearchView 设置 setOnQueryTextListener 会给出空指针异常

android - searchview 自定义关闭图标