标签: searchview

Android - Actionbar Sherlock - 搜索过滤器

在此输入图像描述

我正在尝试使用ActionBar Sherlock实现Action Bar.我有三个Action Button,其中一个是Search Button.在单击搜索按钮时,应显示已经实现的搜索输入字段.但我希望它占据Action Bar的全部宽度.任何想法我怎么能实现同样的目标.

android actionbarsherlock android-actionbar searchview

18
推荐指数
1
解决办法
2万
查看次数

有没有更好的方法来恢复SearchView状态?

我有一个可折叠SearchViewActionBar.执行搜索后,将关联关联ListView以仅显示匹配项.在该状态期间,SearchView仍然会展开并显示搜索字符串.如果用户关闭SearchView,我删除过滤器.

我想恢复搜索状态,例如,在配置更改时,或者当我从另一个活动返回活动时,活动是否被销毁.

我恢复查询字符串onRestoreInstanceState(),如果我在onCreateOptionsMenu()调用中找到查询字符串

searchView.setQuery(query, true); 
Run Code Online (Sandbox Code Playgroud)

以便再次执行查询.事实证明,这比立即应用查询过滤器更好onRestoreInstanceState().对于后者,列表很快显示为未过滤,然后再次应用查询.有了setQuery()这不会发生.

问题:执行查询并过滤列表,但搜索视图仍保持折叠状态.因此,用户无法使用搜索视图删除过滤器或应用其他查询.

onCreateOptionsMenu()我可以确定搜索项和搜索视图存在,因此我可以打电话searchItem.expandActionView().奇怪的是,只有这样才能真正扩展ActionView- 调用setIconified(false)不会扩展视图,即使连续两次调用它也不会.

如果我expandActionView()在打电话之前使用setQuery(),SearchView则打开并显示文本(否则expandActionView()清空SearchView).

不幸的是,expandActionView()有副作用:还会显示建议列表并打开键盘.

我可以使用隐藏键盘searchView.clearFocus().所以剩下的问题是建议清单.如何关闭SearchView包含文本的打开建议列表?

我想知道是否有更好的方法来恢复没有这么多副作用的操作栏中的搜索视图.

android searchview

18
推荐指数
2
解决办法
1万
查看次数

如何在操作栏中构建类似搜索框的Gmail?

我目前正在使用SearchViewwidget ActionBarcompat来搜索时过滤列表.

当用户开始输入文本时,主布局中的ListView会使用适配器进行更新以过滤结果.我这样做是通过实现OnQueryTextListener并过滤每个键击的结果.

相反,我想创建一个类似Gmail的搜索框,其中包含生成的自动建议列表,并且不会更改基础视图

在此输入图像描述

我已经阅读了使用该SearchView组件的本教程,但它需要一个可搜索的活动.我希望下拉列表位于MainActivity上,我有ListView(就像在Gmail应用程序中一样),而不是专用的Activity.
此外,以与教程相同的方式实现它似乎对我想要的东西(只是一个下拉列表)有点过分

android autocomplete android-actionbar searchview

17
推荐指数
3
解决办法
2万
查看次数

如何更改SearchView默认图标?

我使用了" Android Action Bar Style Generator "来生成我自己的Holo主题.然后我在操作栏中添加了两个图标,一个用于searchFilter,另一个用于文件选择器,两个图标都是白色.文件选择器图标(在右侧)看起来不错,但不知何故搜索图标看起来是深灰色.在搜索文本视图中键入时,关闭按钮也显示为深灰色.

我尝试过更改动作栏的颜色以及搜索视图的颜色,但没有成功.为什么搜索视图显示此颜色?我该怎么改变它?

ActionBar有两个动作

非常感谢你.

更新:我认为我的应用程序正在使用我的图标,但它没有,它使用默认的搜索视图图标,所以我的问题实际上是,如何更改搜索视图的默认图标?menu.xml文件中的这句话不起作用:

android:icon="@drawable/selectable_header_search"
Run Code Online (Sandbox Code Playgroud)

customization android android-actionbar searchview

16
推荐指数
3
解决办法
3万
查看次数

如何在searchView中收听键盘搜索按钮

我有一个SearchView.当用户点击键盘搜索按钮时,我需要进行服务器调用.听众的代码是什么样的?我想我必须使用OnClickListener.但是知道它是搜索按钮的内部代码,我不知道如何确定.

android android-softkeyboard searchview

16
推荐指数
1
解决办法
2万
查看次数

从SearchView开始新活动

我有2个活动:第一个有一个带有搜索视图的操作栏,第二个应该显示搜索查询的结果.

androidmanifest:

    <activity
        android:name=".SearchActivity"

        ...
        android:launchMode="singleTop">           

        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable" />
        ...

    </activity>

   <activity
        android:name=".ResultsActivity"
        ...

         <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>

    </activity>
Run Code Online (Sandbox Code Playgroud)

searchable.xml

<searchable
xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_name"
android:hint="@string/enter_a_word" />
Run Code Online (Sandbox Code Playgroud)

SearchActivity

....
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_noun_list, menu);

    // Associate searchable configuration with the SearchView
    SearchManager searchManager =  (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView =  (SearchView) menu.findItem(R.id.search).getActionView();
    searchView.setSearchableInfo( searchManager.getSearchableInfo(getComponentName()));

    return true;
}
....
Run Code Online (Sandbox Code Playgroud)

ResultsActivity:

@Override
protected void onCreate(Bundle …
Run Code Online (Sandbox Code Playgroud)

android searchview

16
推荐指数
1
解决办法
1万
查看次数

SearchView提示未显示

我正在尝试在主活动的搜索视图中显示提示文本.onqueryTextSubmit启动另一个名为SearchResultsActivity的活动,该活动将显示查询结果.我的问题是我无法显示提示文本.我的searchable.xml代码

<searchable xmlns:android="http://schemas.android.com/apk/res/android"
        android:hint="@string/search_hint"
        android:label="@string/app_name"
/>
Run Code Online (Sandbox Code Playgroud)

和清单代码

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.SEARCH"/>
            <action android:name="android.intent.action.MAIN"/>

            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>

        <meta-data
            android:name="android.app.default_searchable1"
            android:value=".SearchResultsActivity"
            android:resource="@xml/searchable"/>
    </activity>
    <activity android:name=".SearchResultsActivity">
        <meta-data android:name="android.app.searchable"
                   android:resource="@xml/searchable">
        </meta-data>
    </activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)

最后我的onQueryTextSubmit代码

@Override
        public boolean onQueryTextSubmit(String query)
        {

            Anniversaries tempResults;
            tempResults = mainAnniversariesManager.searchManager.searchAnniversaries(query);

            if (tempResults.entries.size() == 0)
            {
                snackbar = Snackbar.make(findViewById(R.id.coordinator), getString(R.string.no_results_found) + query, Snackbar.LENGTH_INDEFINITE);
                snackbar.show();
                return true;
            } else
            {
                snackbar = null;
                if (!searchView.isIconified())
                {
                    searchView.setIconified(true);
                }
                menuItem.collapseActionView();

                Intent intent=new Intent(getApplicationContext(),SearchResultsActivity.class);
                Bundle …
Run Code Online (Sandbox Code Playgroud)

android android-manifest searchview

16
推荐指数
3
解决办法
2万
查看次数

测试RxBinding RxSearchView

背景

public Observable<List<Foo>> search(SearchView searchView) {

    return RxSearchView.queryTextChanges(searchView)
            .filter(charSequence -> !TextUtils.isEmpty(charSequence))
            .throttleLast(100, TimeUnit.MILLISECONDS)
            .debounce(200, TimeUnit.MILLISECONDS)
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeOn(AndroidSchedulers.mainThread())
            .flatMap(this::performSearch) //Search the DB
            .onErrorResumeNext(this::doSomething);
}
Run Code Online (Sandbox Code Playgroud)

我试图用AndroidJUnit4跑步者测试上面的方法Mocktio.

@Test
public void testSearchCallsDataManager_WhenCalled() {

    String input = "abc";

    when(mockSearchView.getQuery()).thenReturn(input);

    searchRequestManager.search(mockSearchView).subscribe(testSubscriber); //Using standard TestSubscriber

    testSubscriber.assertNoErrors();
    testSubscriber.assertNotCompleted();
    verify(mockDataManager).getFoos(input);
}
Run Code Online (Sandbox Code Playgroud)

问题

我尝试过使用a mockSearchView和real SearchView.

mockSearchView = mock(SearchView.class);
searchView = new SearchView(InstrumentationRegistry.getContext(), null);
searchView = new SearchView(InstrumentationRegistry.getTargetContext(), null);
Run Code Online (Sandbox Code Playgroud)

在实例化期间,实际对象在测试运行时会导致不同的异常.模拟对象在执行期间似乎没有任何效果.

更新

为清楚起见:理想情况下,如果我可以模拟SearchView,那将是很好的,因为我想测试发生什么后发生的事情以及使用正确的输入调用performSearch方法.

android android-appcompat searchview rx-java rx-android

16
推荐指数
1
解决办法
847
查看次数

如何在flutter中创建工具栏搜索视图

我需要在我的app工具栏中实现searchview来实现列表视图列表过滤器.像下面的图像,我搜索很多仍然没有得到正确的答案.任何帮助将不胜感激,谢谢你提前.在此输入图像描述

dart searchview flutter flutter-layout

16
推荐指数
4
解决办法
2万
查看次数

如何在搜索时删除android searchview弹出文本?

我已经实现了动作栏SearchView,它工作正常,但在屏幕的底部显示了一个浮动文本弹出窗口.看截图:

短屏幕

ListView Java类:

@Override
    public boolean onQueryTextChange(String newText) {

        if (TextUtils.isEmpty(newText)) {
            mListView.clearTextFilter();
        } else {

            // EventAdapterView ca = (EventAdapterView)mListView.getAdapter();
            // ca.getFilter().filter(newText.toString());

            // Filter lFilter = mDataAdapter.getFilter();
            // lFilter.filter("");
            // following line was causing the ugly popup window.
            mListView.setFilterText(newText.toString());

            // EventAdapterView ca = (EventAdapterView)mListView.getAdapter();
            // ca.getFilter().filter(newText.toString());

        }

        return true;
    }

    @Override
    public boolean onQueryTextSubmit(String query) {
        return true;
    }
Run Code Online (Sandbox Code Playgroud)

适配器类

@Override
    public Filter getFilter() {
        /**
         * A filter object which will filter message key
         * */
        Filter filter …
Run Code Online (Sandbox Code Playgroud)

search android android-listview searchview android-search

15
推荐指数
1
解决办法
5798
查看次数