标签: searchview

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
查看次数

SearchView on support.v7.appcompat库问题:默认9-patch背景无法正确呈现

我正在使用support.v7.appcompat库开发一个带ActionBar的应用程序.操作栏有效,显示了SearchView,提示显示.唯一的问题是SearchView的背景不是正确的scalling.通常的Insead,看起来很大并且带有9条补丁的黑色线条.

使用:

  • 从命令行开发,ant debug用于编译.
  • 在Linux Mageia 3上,ant版本:Apache Ant(TM)版本1.8.4于2013年1月11日编译
  • 使用project.properties行链接到库:

android.library.reference.1 = ../../../../../SDK /演员/机器人/支撑/ V7 /程序兼容性/

  • 使用@ style/Theme.AppCompat.Light
  • 在带有CM10-1的设备中,在带有4.1的设备中进行测试,使用带有API 8的模拟器(Android 2.2)进行测试.所有设备都有相同的结果.

截图:

在此输入图像描述

码:

DiccionariCatala.java(主要活动):

import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.SearchView;
import android.support.v4.view.MenuItemCompat;
import android.app.Activity;
import android.app.SearchManager;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuInflater;


public class DiccionariCatala extends ActionBarActivity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }   

    @Override
    public boolean onCreateOptionsMenu(Menu menu){
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_actions, menu); …
Run Code Online (Sandbox Code Playgroud)

android searchview android-support-library android-actionbar-compat

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

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

使用Android工具栏在SearchView中更改TextColor

我有以下问题.我已将Actionbar设置为使用工具栏,而不是使用API​​ 21和appcompat-v7:21.在textColorPrimary风格标签被配置为使用的颜色@android:color/white,所以在新的Android工具栏所有的冠军将有一个白色的文本颜色(越远越好).

现在我添加了一个SearchView,并为它设置自定义背景,如下所示:

<style name="AppTheme.Base" parent="Theme.AppCompat.Light">
    <item name="colorPrimary">@color/action_bar_background</item>
    <item name="colorPrimaryDark">@color/status_background</item>
    <item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="android:textColorPrimary">@android:color/white</item>
    <item name="searchViewStyle">@style/SearchViewStyle</item>
</style>

<style name="SearchViewStyle" parent="Widget.AppCompat.SearchView">
    <item name="queryBackground">@drawable/search_background</item>
    <item name="searchIcon">@drawable/icon_search</item>
</style>
Run Code Online (Sandbox Code Playgroud)

drawable @drawable/search_background是一个纯白色矩形.那猜猜怎么着?由于工具栏中的标题文本颜色为白色,因此SearchView中的文本颜色现在也是白色,而SearchView背景是白色矩形,用户无法看到他正在键入的内容.

我的问题是:如何为Android工具栏标题和SearchView文本提供不同的文本颜色?

android searchview android-toolbar

11
推荐指数
2
解决办法
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清除按钮颜色

我正在使用工具栏创建一个searchview onCreateOptionsMenu,但无法获得X最初为白色的清除按钮.开始输入字母时变为白色.清理后它也会保持白色.

清除按钮的示例具有灰色而不是白色

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    MenuInflater menuInflater = getMenuInflater();
    menuInflater.inflate(R.menu.responsible_menu, menu);
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); //TODO: May not be needed?

    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener()
    {
        @Override
        public boolean onQueryTextSubmit(String query)
        {
            mAdapter.updateUIWithFilter(query);
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText)
        {
            mAdapter.updateUIWithFilter(newText);
            return false;
        }
    });

    // Does not work! Still not white.
    ImageView searchClose = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
    searchClose.setColorFilter(Color.argb(255, 255, 255, 255));

    searchClose.setAlpha(255);

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

responsible_menu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android" …
Run Code Online (Sandbox Code Playgroud)

android searchview android-support-library

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

Android SearchView默认设置为Expanded

我目前正在开发一个简单的应用程序,使用Android Studio,最低API级别为8,现在我正在使用android.support.v7.widget.SearchViewLinearLayoutcontent_main.xml布局,而不是ACTIONBAR,现在问题是,我无法将searchView设置为Expanded默认情况下,我已经寻找解决方案,我只有这个:

android:iconifiedByDefault="false"

这是我的searchView的完整代码

          <android.support.v7.widget.SearchView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/searchView"
            android:background="#00000000"
            android:iconifiedByDefault="false"
            android:layout_weight="1" />
Run Code Online (Sandbox Code Playgroud)

但没有运气,它不起作用.谁有人可以帮助我?任何帮助,将不胜感激.非常感谢!

android android-layout searchview android-studio

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

如何在Google Play商店应用中设置Android SearchView风格?

我想风格SearchViewtoolbar看/作用相似SearchViewGoogle Play Store app.它似乎将搜索视图包装在一个cardview中,但它似乎也整合了按钮/抽屉切换行为.

这是searchView的主要活动,它集成了抽屉式切换器

MainActivity SearchView

当您单击它时,抽屉切换更改为箭头(单击时将从搜索视图中删除焦点)

在此输入图像描述

当您单击商店中的应用程序时,您将转到应用程序详细信息页面,并且您将搜索视图的图标化版本看作具有向上按钮的折叠操作项:

在此输入图像描述

最后,如果您点击搜索图标,它会扩展为一个动作项目(带有一种涟漪动画),并在屏幕上一直显示并包含向上按钮:

在此输入图像描述

当我自己尝试这样做时,我遇到了很多问题.我试图将searchview包装在cardview中并将其放在工具栏中.它的工作原理但左边总是有填充,我无法删除(我试过contentInsetStart,不起作用):

<android.support.v7.widget.Toolbar
    android:id="@+id/activityCatalogToolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:popupTheme="@style/AppTheme.PopupOverlay"
    android:theme="@style/AppTheme.AppBarOverlay"
    app:contentInsetStart="0dp"
    app:contentInsetLeft="0dp">

    <android.support.v7.widget.CardView
        android:id="@+id/activityCatalogSearchContainer"
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:layout_gravity="end"
        android:layout_marginTop="4dp"
        android:layout_marginBottom="4dp"
        android:layout_marginRight="8dp"
        android:layout_marginLeft="8dp"
        app:cardCornerRadius="4dp"
        app:cardElevation="8dp">

        <android.support.v7.widget.SearchView
            android:id="@+id/activityCatalogSearch"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:queryHint=""
            android:iconifiedByDefault="false"/>

    </android.support.v7.widget.CardView>

</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我还试图删除工具栏,只用FrameLayout替换它.这允许我控制填充但显然我丢失了工具栏功能(向上按钮等)并且还引入了主题问题(图标和文本消失).

有谁知道他们是怎么做的?我不想仅仅为框架中已存在的样式小部件添加另一个库.谢谢!

android themes android-appcompat google-play searchview

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

工具栏中的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
查看次数

什么是Android SearchView的搜索类型?

在提供UI的Android SearchView小部件中.它将搜索查询并向搜索提供程序提交请求.

BinarySearch等集合提供了不同类型的搜索查询...

Android Widget SearchView执行什么样的搜索查询.

(BinarySearch或LinerSearch或其他任何东西......)

android searchview

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