标签: searchview

Android:getSearchableInfo(getComponentName())返回null?

我正在尝试获取SearchView的建议.我为它实现了一个自定义内容提供程序.我也提到了这个链接来实现SearchView的建议.我面临的问题是,我得到空值searchManager.getSearchableInfo(getComponentName())

以下是片段:

AndroidManifest.xml中

    <application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <provider android:name=".SearchProvider"
        android:enabled="true"
        android:authorities="com.example.currentlocationmapdemo"
        android:grantUriPermissions="true"
        android:exported="true">
        <grant-uri-permission android:pathPattern="*" />
    </provider>
    <uses-library android:name="com.google.android.maps" />

    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
      <meta-data android:name="android.app.searchable"
          android:resource="@xml/searchable"/> 
    </activity>
Run Code Online (Sandbox Code Playgroud)

searchable.xml

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="label"
android:hint="hint"
android:searchSuggestAuthority="com.example.currentlocationmapdemo"
android:searchSuggestSelection=" ? ">
Run Code Online (Sandbox Code Playgroud)

主要活动

    @Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.searchview_in_menu, menu);
    MenuItem searchItem = menu.findItem(R.id.action_search);
    mSearchView = (SearchView) searchItem.getActionView();
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchableInfo info …
Run Code Online (Sandbox Code Playgroud)

android android-searchmanager search-suggestion searchview

12
推荐指数
2
解决办法
9059
查看次数

从另一个活动返回时,SearchView获得焦点并打开键盘

当我从另一个活动返回到主活动时,searchView获得焦点并且键盘打开,我设法通过使用以下方式阻止键盘打开:

    getWindow().setSoftInputMode(
              WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Run Code Online (Sandbox Code Playgroud)

但这还不够,如果打开并关闭操作栏下拉菜单,键盘会重新出现,因为searchView仍然具有焦点(记住我只关闭了键盘).我试图获得对searchView的引用并使其失去焦点,但这并没有奏效.

所以基本上,我只是希望searchView永远不会有焦点或提示键盘打开,除非实际触摸了searchView文本区域.

keyboard android searchview

12
推荐指数
2
解决办法
6158
查看次数

使用SearchView临时过滤RecyclerView的工具栏

我需要在我的Android应用程序中实现搜索功能,它使用工具栏,SlidingTabLayout和保存片段的ViewPager.在每个片段中都有一个包含项目列表的RecyclerView.

RecyclerView数据是在单独的类(DataAccess.java)中静态定义的,这些列表会更新,只需通过调用(不传递新数据)即可刷新RecyclerView

mRecyclerView.getAdapter().notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法临时过滤RecyclerView而不更改数据,并在用户按下工具栏内的返回按钮后删除过滤器并显示初始列表.

在按工具栏菜单中的搜索图标之前:

在此输入图像描述

因此,当用户输入"Josip ..."时,过滤器将处于活动状态

在此输入图像描述

在他按下SearchView中的X按钮后,用户将获得与之前相同的数据而不使用过滤器.

@Override 
public boolean onQueryTextChange(String newText) {
    // filter data (temporary remove all items from DataAccess.list that don't .startsWith(newText)
}

@Override 
public boolean onQueryTextSubmit(String query)
    // Doesn't help if I revert deleted items here
}
Run Code Online (Sandbox Code Playgroud)

android-fragments searchview android-toolbar android-recyclerview

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

在Android中的SearchView自定义字体

我一直在尝试将自定义字体设置为android.support.v7.widget.SearchView查询提示和View.I中输入的文本.我尝试通过创建TypeFace对象动态地将字体从assests设置为searchView,但问题是"SearchView不包含一个setTypeface(Typeface tf)方法." 我确实尝试过自定义的SearchView类但找不到.

 private void setFont(String font1, String font2, String font3)
 {
        Typeface tf = null;

        tf = UiUtil.changeFont(MainActivity.this, font1);
        btn1.setTypeface(tf);

        tf = UiUtil.changeFont(MainActivity.this, font2);
        btn2.setTypeface(tf);

        tf = UiUtil.changeFont(MainActivity.this, font3);
        btn3.setTypeface(tf);

         tf = UiUtil.changeFont(MainActivity.this, font3);
        // no set typeface method..

    }
Run Code Online (Sandbox Code Playgroud)

fonts android searchview android-typeface

12
推荐指数
2
解决办法
5210
查看次数

处理搜索的最佳实践

我有一个SearchView设置,我有一个松散的解耦架构使用RetrofitOtto.

我想知道Android中的搜索或者任何移动应用程序的最佳实践是什么(意味着类似的东西也可以应用于iOS).

具体来说,我正在使用一个AutoCompleteTextView来处理我的建议,SearchView数据直接来自API.我不相信这是一种最佳实践,因为每次用户更改文本时SearchView都会启动API调用.

我正在考虑在SQLite中存储一个Cache然后从那里ping结果,但是如果用户想要最直接的数据呢?你会怎么处理?采用什么样的模式?

非常感谢有关Android中搜索的最佳架构或方法的任何想法.

search android searchview otto

12
推荐指数
2
解决办法
1406
查看次数

工具栏中的Android SearchView

我的活动中有工具栏,我曾尝试从菜单添加搜索视图,但无法在工具栏中添加搜索视图,如何在我的活动工具栏中添加搜索视图.

android android-fragments searchview

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

searchManager.getSearchableInfo(getComponentName())返回null

我已按照此Android指南操作,以便为活动添加搜索栏.设置如下所示:

RES /菜单/ activity_main.xml中:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:id="@+id/search"
    android:title="@string/menu_search"
    android:icon="@android:drawable/ic_menu_search"
    android:showAsAction="collapseActionView|ifRoom"
    android:actionViewClass="android.widget.SearchView" />
<item
    android:id="@+id/menu_settings"
    android:orderInCategory="100"
    android:showAsAction="never"
    android:title="@string/menu_settings"
    android:icon="@drawable/ic_menu_settings"/>

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

RES/XML/searchable.xml:

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/app_name"
    android:hint="@string/search_hint" />
Run Code Online (Sandbox Code Playgroud)

清单文件中的活动条目:

    <activity
        android:name="de.ivu.realtime.app.activity.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable" />
        <meta-data
            android:name="android.app.default_searchable"
            android:value="de.ivu.realtime.app.activity.MainActivity" />
    </activity>
Run Code Online (Sandbox Code Playgroud)

和MainActivity中的代码:

@SuppressLint("NewApi")
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    this.getMenuInflater().inflate(R.menu.activity_main, menu);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
    {
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView = …
Run Code Online (Sandbox Code Playgroud)

android searchable android-menu android-actionbar searchview

11
推荐指数
1
解决办法
9065
查看次数

如何在android中处理Search View的后退按钮

我已经开发了一个在操作栏中有搜索视图的应用程序,当我完全搜索其过滤器时我遇到问题但是当我按下按钮时它仍然显示过滤器数据所以我的问题是什么是Action Bar Search的后退按钮事件视图.?

在此输入图像描述

我的搜索视图代码是

SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(Menus.SEARCH));
    searchView.setQueryHint(this.getString(R.string.search));
    editSearch = (EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
    editSearch.setHintTextColor(getResources().getColor(R.color.white));
    searchView.setOnQueryTextListener(OnQuerySearchView);


 private OnQueryTextListener OnQuerySearchView = new OnQueryTextListener() {

    @Override
    public boolean onQueryTextSubmit(String newText) {
        if (TextUtils.isEmpty(newText)) {
            listAllContact.clearTextFilter();
        } else {
            listAllContact.setFilterText(newText.toString());
        }
        return true;
    }

    @Override
    public boolean onQueryTextChange(String newText) {
        String text = editSearch.getText().toString()
                .toLowerCase(Locale.getDefault());
        adapter.filter(text);
        return true;
    }

};
Run Code Online (Sandbox Code Playgroud)

适配器中的过滤方法

public void filter(String charText) {
    charText = charText.toLowerCase(Locale.getDefault());
    propertyList.clear();

    if (charText.length() == 0) {
       propertyList.addAll(arrayList);
    notifyDataSetChanged();

    } else {
        for (ContactProperty p …
Run Code Online (Sandbox Code Playgroud)

android searchview android-search

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

如何在展开searchView时自定义"向上"按钮?

背景

我的应用程序能够使用ActionBar上的SearchView搜索项目(其他应用程序).

该应用程序使用Google的支持库,它适用于API 9的所有Android版本.

问题

在Lollipop上,当我点击搜索操作项以便开始搜索时,我注意到左上角的向上/向后按钮变为白色,这对于这种情况很糟糕,因为操作栏背景也很白:

在此输入图像描述

奇怪的是,它并不总是发生,我不认为它发生在不是Lollipop的Android版本上(在多个仿真器和设备上测试).

另一个奇怪的事情是导航抽屉图标似乎没问题,以及searchView内的X图标.

这是我的工具栏的XML:

<android.support.v7.widget.Toolbar
    android:id="@+id/activity_app_list__toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:minHeight="?attr/actionBarSize" />
Run Code Online (Sandbox Code Playgroud)

"colorPrimary"设置为:#ffEFEFEF.

此外,主题的活动的父级是"Theme.AppCompat.Light.NoActionBar",因为我已将工具栏设置为actionBar.

这个问题

我该如何解决这个问题?

这个问题的原因是什么?为什么它在其他Android版本上运行良好?

android up-button searchview android-5.0-lollipop

11
推荐指数
2
解决办法
6544
查看次数

工具栏中的SearchView和collapseIcon之间的边距

我试图实现android.support.v7.widget.SearchViewcollapseIconToolbar.一切工作正常即SearchView工作正常,但我无法删除/减少填充之间SearchViewcollapseIcon,如可见随附的屏幕截图.

有关如何做到这一点的任何想法?

搜索查看

我试过了 :

app:contentInsetStartWithNavigation="0dp"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
android:contentInsetLeft="0dp"
android:contentInsetStart="0dp"
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

android searchview

11
推荐指数
2
解决办法
4100
查看次数