当前位置: 首页 > 知识库问答 >
问题:

如何在清除不可折叠的SearchView时执行搜索?

邬博涉
2023-03-14

SearchView是一种设计标准,但有一个缺陷,它的OnCloseListener(通常我会将代码放在此处进行搜索而不进行筛选)不被调用。
如果您只想在OnQueryTextSubmit而不是OnQueryTextChange中执行搜索,则会出现问题。
当查询字符串为空时,而且我不想在用户只是为了键入其他内容而擦除它时进行搜索--只有在故意删除文本筛选时才进行搜索。

我使用的是seticonifiedbydefault(true),因为设计要求始终可见的搜索栏--但即使情况并非如此,onclose()也只有当您在第二次单击“X”图标时“图标化”SearchView时才会调用。

最佳解决方案是什么?最好不在SearchView上添加自定义视图等。

共有1个答案

蒋嘉实
2023-03-14

解决方法:创建覆盖SearchView的自己的视图,当按下时执行搜索。仅当搜索字符串为空但上次执行的搜索使用了非空字符串时才可见(不需要其他情况)。

xml prettyprint-override"><RelativeLayout>
    <SearchView
        android:id="@+id/search" />
    <ImageView
        android:id="@+id/clear"
        android:layout_width="@dimen/someValue"
        android:layout_height="0dip"
        android:layout_alignTop="@id/search"
        android:layout_alignBottom="@id/search"
        android:layout_alignRight="@id/search"
        android:scaleType="fitCenter"
        android:visibility="gone"
        android:src="@drawable/someIcon" />
</RelativeLayout>
// assign to the overlaying ImageView
class OnClearClickListener implements View.OnClickListener{
    @Override
    public final void onClick(View v) {
        View clear = findViewById(R.id.clear);
        clear.setVisibility(View.GONE); // hide, just did its job
        performSearch();
    }
}
// assign to SearchView
class OnFilterQueryTextListener implements OnQueryTextListener {
    @Override
    public boolean onQueryTextChange(String newText) {
        boolean hide = newText != null && newText.length() > 0 ||
            !lastSearchUsedFilter(); // check value stored on successful response
        findViewById(R.id.clear).setVisibility(hide ? View.GONE : View.VISIBLE);
        return false;
    }
    @Override
    public boolean onQueryTextSubmit(String query) {
        findViewById(R.id.clear).setVisibility(View.GONE);
        performSearch();
        return false;
    }

});
 类似资料:
  • 当导航栏崩溃时,我想让我的搜索栏可见。 我的代码:http://jsfiddle.net/edalzell/a3yng825/1/折叠时工作,但展开时显示两个搜索栏。 HTML:

  • 我正在尝试在我的android应用程序中实现折叠工具栏。我可以按我希望的方式显示工具栏,但滚动时它不会塌陷。 我正在使用以下代码 activity.xml main_toolbar.xml 下面是屏幕的外观

  • 使用: 随着项目Cheesesquare的更新。 进入奶酪的细节,我移除2张牌(只有一张)。有没有办法防止显示空白的工具栏折叠?

  • 问题内容: 我使用Bootstrap 4很好地创建了这个可折叠的导航栏,但是我希望当用户单击链接时将其关闭。有什么办法吗?谢谢 html导航栏: .icon-bar的css,因为Bootstrap 4不使用icon-bar类。 问题答案: 您可以像这样将组件添加到链接。 或者 ,(也许是一种更好的方法)像这样使用jQuery。

  • 此时开始展开 我实际上要做的是使标题在完全展开时变成,允许用户给他/她的字符命名,然后显示为标题。我试图通过调用或,以及对的子级调用这两个方法来解决这个问题。没有效果。

  • 基本上我在页面的顶部有一个navbar。这个navbar具有折叠功能,因此菜单仍然可以用于小屏幕。我想在这个可折叠的navbar的底部附加一个div。更具体地说,在屏幕的右侧,会有一个红色的圆圈,它以navbar的边界为中心。 我正在寻找类似这样的东西:在这里输入图像描述,圆圈不是一个按钮。可折叠按钮仅出现在小屏幕上(在导航栏右侧) 我尝试了很多我在网上找到的建议。他们大多建议给父div一个相对位