标签: android-search

如何检测SearchView的后退按钮?

我正在使用单个活动来显示SearchView以及显示搜索结果.搜索结果只是项目的子集,因此搜索充当过滤器.一切似乎都运行正常,但是当我点击SearchView的后退按钮时,我无法弄清楚如何恢复视图中的所有项目.

或者可能有另一种方法可以检测用户何时从搜索结果导航到上一个视图(在我的情况下,是同一个视图).

谢谢

android android-layout searchview android-search

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

android.support.v4.widget.SearchViewCompat示例?

我试图使用SearchViewCompatActionBarSherlock在API 8应用.

public boolean onCreateOptionsMenu(Menu menu) {
    MenuItem item = menu.add("Search")
        .setIcon(isLight ? R.drawable.ic_search_inverse : R.drawable.ic_search)
        .setActionView(R.layout.collapsible_edittext);
    item.setShowAsAction(
        MenuItem.SHOW_AS_ACTION_ALWAYS | 
        MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);

    // To use SearchViewCompat, I need to add it to the Menu item as well:
    View searchView = SearchViewCompat.newSearchView(this);
    // ...
    SearchViewCompat.setOnQueryTextListener(...);
    // ...
    item.setActionView(searchView);
Run Code Online (Sandbox Code Playgroud)

请注意,顶部和底部代码都需要调用setActionView().这是否意味着无法进行搜索?

android searchview android-search

13
推荐指数
2
解决办法
6007
查看次数

如何更改SearchView元素的颜色?

我想在我的项目中使用SearchView,但我的元素颜色有问题.让我告诉你:它的fragmentDialog我有我的SearchView 你可以在这看到我的意思

我不需要改变bg颜色.下一张图片就是例如.我想看看没有黑色bg的SearchView元素. 元素的颜色是白色

我试过了

  • 改变主题
  • 改变风格
  • 改变色彩

但没有任何工作.搜索图标和anoter元素仍然是白色的.也许我失去了什么?我可以用XML做到这一点吗?请帮我.

android android-theme android-search android-styles

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

如果SearchView已扩展并准备好接受输入,Android SearchView上是否有任何监听器可以通知?

当用户没有输入任何内容时,我想在SearchView中显示一些默认建议.我正在使用矩阵光标手动设置我的自定义建议适配器.我尝试在onFocusChange和onClickListner中设置适配器,但建议隐藏在键盘后面,显然建议比键盘更早加载.我没有找到任何监听器告诉我searchview在视图中完全加载了键盘.帮助我找到正确的解决方案或任何解决方法.我已经尝试了一个解决方法postDelayed但它不是顺畅的经验.

我在onCreateOptionsMenu中有这个代码

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    menu.clear();
    final MenuInflater inflater = this.getMenuInflater();
    inflater.inflate(R.menu.searchview_in_menu, menu);
    this.menu=menu;
    basketProductCount = ShoppinglistDataSource.get(getContext()).getProductCountToOrder();
    if(basketProductCount>0 && menu!=null){
        this.activateBasket();
    }

    SearchManager manager = (SearchManager) getSystemService(SEARCH_SERVICE);
    MenuItem searchMenuItem = menu.findItem(R.id.action_search);
    mSearchView = (SearchView) searchMenuItem.getActionView();

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {

        int searchButtonId = mSearchView.getContext().getResources().getIdentifier("android:id/search_button", null, null);
        ImageView searchButton = (ImageView) mSearchView.findViewById(searchButtonId);
        if(searchButton!=null)
            searchButton.setImageResource(R.drawable.search);



        mSearchView.setSearchableInfo(manager.getSearchableInfo(new ComponentName(getApplicationContext(), SearchProductActivity.class)));
        mSearchView.setIconifiedByDefault(true);
        mSearchView.setIconified(true);
        mSearchView.setQueryHint("Search from 4000+ products");
        mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {

            @Override
            public boolean onQueryTextSubmit(String s) {
                Log.d("SEARCH_VIEW_DEBUG","Inside onQueryTextSubmit for query: "+s);
                mSearchView.clearFocus();
                mSearchView.setIconified(true); …
Run Code Online (Sandbox Code Playgroud)

android searchview android-search

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

如何在搜索过滤器中突出显示搜索到的文本?

我正在尝试进行搜索,以便突出显示所有"可见"搜索字母.我尝试使用spannable但是没有做到这一点,也许我没有做到这一点?基于此:突出显示ListView项目中的搜索文本 如何突出显示可见文本?这是我的过滤器:

private LayoutInflater mInflater;

        private ValueFilter valueFilter;

        public MySimpleArrayAdapter(Activity context) {

            this.context = context;
            mInflater = LayoutInflater.from(context);

        }
        private class ValueFilter extends Filter {


            //Invoked in a worker thread to filter the data according to the constraint.
            @Override
            protected synchronized FilterResults performFiltering(CharSequence constraint) {

                FilterResults results = new FilterResults();

                if (constraint != null && constraint.length() > 0) {

                    ArrayList<Integer> filterList = new ArrayList<>();

                    int iCnt = listItemsHolder.Names.size();
                    for (int i = 0; i < iCnt; i++) {
                        if(listItemsHolder.Types.get(i).toString().indexOf("HEADER_")>-1){ …
Run Code Online (Sandbox Code Playgroud)

android textview android-layout android-fragments android-search

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

单一活动中的Android搜索活动

我想让我的应用程序包含一个单一的活动.此活动应该能够创建搜索并接收搜索.不幸的是,当我点击操作栏中的搜索按钮时,我的SearchView中会出现一个"双"搜索栏.我的意思是有一个搜索栏(dark-- SearchView)在操作栏中显示一秒钟,然后在操作栏上显示第二个(白色).有帮助吗?我究竟做错了什么?对不起,这个搜索的东西都是新的,让我感到困惑.

MainActivity(唯一的活动):

public class MainActivity extends ActionBarActivity {
Menu mMenu;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //getSupportActionBar().setDisplayShowTitleEnabled(false);
    setContentView(R.layout.activity_main);

    handleIntent(getIntent());
}

@Override
protected void onNewIntent(Intent intent) {
    handleIntent(intent);
}

private void handleIntent(Intent intent) {
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
        String query = intent.getStringExtra(SearchManager.QUERY);
        //use the query to search your data somehow
    }
}

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



    if …
Run Code Online (Sandbox Code Playgroud)

android android-searchmanager searchview android-search

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

如何在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万
查看次数

如何将我的应用程序内容与描述和预览添加到Google搜索结果中?

我找到了这篇文章:一种在您的应用中搜索内容的新方法,我对这个机会感到非常兴奋.我想在谷歌搜索结果中显示我的应用程序内容,如下所示:

Google In Apps Search

但是,本文没有关于如何在您的应用中实现此功能的任何信息.

我在我的应用程序中使用App Indexing API,如文章中所述:

这是我的代码:

...
  private GoogleApiClient mClient;

  @Override protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.ac_main);
    mClient = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
  }

  public Action getAction() {
    Thing object = new Thing.Builder()
        .setName("Test Content")
        .setDescription("Test Description")
        .setUrl(Uri.parse("myapp://com.example/"))
        .build();

    return new Action.Builder(Action.TYPE_VIEW).setObject(object)
        .setActionStatus(Action.STATUS_TYPE_COMPLETED)
        .build();
  }

  @Override
  public void onStart() {
    super.onStart();
    mClient.connect();
    AppIndex.AppIndexApi.start(mClient, getAction());
  }

  @Override
  public void onStop() {
    AppIndex.AppIndexApi.end(mClient, getAction());
    mClient.disconnect();
    super.onStop();
  }
...
Run Code Online (Sandbox Code Playgroud)

这是结果:

搜索结果

谷歌显示我的应用程序的测试内容,但没有描述和预览图像.有没有办法在Google搜索结果中添加说明和预览图片?(如Youtube或Twitter)

android google-search android-search google-app-indexing

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

工具栏搜索建议主题

我正在尝试将搜索建议更改为"轻量级主题".我正在使用appcompat-v7:22.2.0库并阅读有关自定义搜索视图小部件(android.support.v7.widget.SearchView)的新功能.

第一部分

工具栏

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:minHeight="?attr/actionBarSize"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
Run Code Online (Sandbox Code Playgroud)

主旋律

<style name="Main.Theme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/red</item>
    <item name="colorPrimaryDark">@color/red_dark</item>
    <item name="searchViewStyle">@style/Main.Theme.SearchView</item>
</style>
Run Code Online (Sandbox Code Playgroud)

SearchView主题

<style name="Main.Theme.SearchView" parent="Widget.AppCompat.Light.SearchView">
    <item name="voiceIcon">@mipmap/test_icon</item>
</style>
Run Code Online (Sandbox Code Playgroud)

这样我就无法影响搜索视图.为了测试它,我正在更改搜索视图中的语音图标,并且它不会从默认值更改.

第二部分

第二个尝试是覆盖工具栏中的叠加主题:

叠加主题

<style name="Main.Theme.Overlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="searchViewStyle">@style/Main.Theme.SearchView</item>
</style>
Run Code Online (Sandbox Code Playgroud)

这样我得到一些反馈,但我失去了"材料设计",特别是我的"旧"提示图标,并且它有下划线.我的最终目标是更改搜索建议行背景:

建议行布局

<item name="suggestionRowLayout">@layout/my_custom_layout</item>
Run Code Online (Sandbox Code Playgroud)

我认为我很难实现这个目标......你能帮助我吗?

android android-layout android-theme android-support-library android-search

10
推荐指数
1
解决办法
3308
查看次数

搜索视图关闭图标出现禁用而不是白色

每当我在搜索视图中输入时,关闭按钮(X)似乎由于某种原因而被禁用,而不是以白色显示.如何解决此错误以使其显示为白色?

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.menu_search_list, menu);
    MenuItem item = menu.findItem(R.id.action_search);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
    searchView.setOnQueryTextListener(this);
    searchView.setQueryHint(getResources().getString(R.string.station_search_hint));
}
Run Code Online (Sandbox Code Playgroud)

menu_search_list.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/action_search"
        android:icon="@drawable/ic_action_search_light"
        android:title="@string/action_search"
        android:orderInCategory="100"
        app:showAsAction="always"
        app:actionViewClass="android.support.v7.widget.SearchView"/>
</menu>
Run Code Online (Sandbox Code Playgroud)

xml android android-actionbar android-search

10
推荐指数
1
解决办法
3864
查看次数