标签: searchview

搜索视图的操作栏.反向兼容性问题

我正在构建一个示例应用程序来演示带有过滤器和其他Action Bar项目的SearchView.我能够在4.2(Nexus 7)上成功运行这个应用程序.但它不是在2.3上运行.我用Google搜索了这个问题.来了解我应该使用SherLock Action吧.我刚刚访问http://actionbarsherlock.com/download.html,下载了zip文件,并在视频中添加了库:http://www.youtube.com/watch? v = 4GJ6yY1lNNY&feature = player_embedde由WiseManDesigns提供.但我仍然无法弄清楚这个问题.

这是我的代码:

SearchViewActionBar.java

public class SearchViewActionBar extends Activity implements SearchView.OnQueryTextListener 
{
    private SearchView mSearchView;
    private TextView mStatusView;
    int mSortMode = -1;
    private ListView mListView;
    private ArrayAdapter<String> mAdapter;

    protected CharSequence[] _options = { "Wild Life", "River", "Hill Station", "Temple", "Bird Sanctuary", "Hill", "Amusement Park"};
    protected boolean[] _selections =  new boolean[ _options.length ];


    private final String[] mStrings = Cheeses.sCheeseStrings;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().requestFeature(Window.FEATURE_ACTION_BAR);

        setContentView(R.layout.activity_main);

       // …
Run Code Online (Sandbox Code Playgroud)

android actionbarsherlock android-actionbar searchview

4
推荐指数
1
解决办法
2259
查看次数

无法更改actionbarsherlock SearchView图标

当我使用以下配置时:

<item
    android:id="@+id/menu_item_search"
    android:actionViewClass="com.actionbarsherlock.widget.SearchView"        
    android:icon="@android:drawable/ic_menu_search"
    android:showAsAction="ifRoom"
    android:title="@string/action_search"/>
Run Code Online (Sandbox Code Playgroud)

ActionBarSherlock SearchView对提供的android:icon没有反应

但是如果是的话

android:showAsAction="ifRoom|collapseActionView"
Run Code Online (Sandbox Code Playgroud)

图标已正确更改,但搜索视图中的关闭按钮不存在.

如何更改搜索图标并在右侧搜索视图角显示关闭按钮?

这是我的AppTheme:

<style name="AppTheme" parent="AppBaseTheme">               
    <item name="android:windowBackground">@color/background_window</item>
    <item name="android:actionBarStyle">@style/ActionBarStyle</item>
    <item name="homeAsUpIndicator">@drawable/new_indicator</item>
    <item name="android:homeAsUpIndicator">@drawable/new_indicator</item>

    <!-- ActionBar (SearchView) fix -->
    <item name="textColorPrimary">@color/abs__primary_text_holo_light</item>
    <item name="textColorPrimaryInverse">@color/abs__primary_text_holo_dark</item>
    <item name="searchDropdownBackground">@drawable/abs__search_dropdown_dark</item>
    <item name="searchViewTextField">@drawable/abs__textfield_searchview_holo_dark</item>
    <item name="searchViewTextFieldRight">@drawable/abs__textfield_searchview_right_holo_dark</item>        
    <item name="searchViewCloseIcon">@drawable/abs__ic_clear</item>
    <item name="searchViewSearchIcon">@drawable/abs__ic_voice_search</item>
    <item name="searchViewGoIcon">@drawable/abs__ic_go</item>
    <item name="searchViewVoiceIcon">@drawable/abs__ic_voice_search</item>
    <item name="searchAutoCompleteTextView">@style/Widget.Sherlock.SearchAutoCompleteTextView.DarkActionBar</item>         
</style>

<style name="Widget.Sherlock.SearchAutoCompleteTextView.DarkActionBar">
    <item name="android:textColor">?attr/textColorPrimaryInverse</item>
</style>
Run Code Online (Sandbox Code Playgroud)

清单申请:

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

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
Run Code Online (Sandbox Code Playgroud)

操作栏菜单:

<item
    android:id="@+id/menu_item_search" …
Run Code Online (Sandbox Code Playgroud)

android actionbarsherlock searchview

4
推荐指数
1
解决办法
3190
查看次数

调用MenuItem.collapseActionView时出现NoSuchMethodError

使用android支持库我实现了ActionBar(android.support.v7.app.ActionBar).同时我试图与SearchView交互并尝试 使用以下方法折叠SearchItem:

 searchItem.collapseActionView();
Run Code Online (Sandbox Code Playgroud)

seachItem的类型为MenuItem.这导致以下异常:

java.lang.NoSuchMethodError: android.view.MenuItem.collapseActionView
Run Code Online (Sandbox Code Playgroud)

那么我应该如何解开SearchItem呢?

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

4
推荐指数
1
解决办法
1882
查看次数

如何在API级别8+中支持searchItem.setOnActionExpandListener?

我正在使用ActionBarActivity,如何在API级别8+中支持searchItem.setOnActionExpandListener?它表示最低API级别14是必需的.

下面是我的代码,目前我正在抑制错误并仅在API> = 14时允许代码执行.

@SuppressLint("NewApi")
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.action_bar_home_screen, menu);
    searchItem = menu.findItem(R.id.action_search);
    SearchView searchView = (SearchView) MenuItemCompat
                .getActionView(searchItem);

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
            searchItem.setOnActionExpandListener(new OnActionExpandListener() {

                @Override
                public boolean onMenuItemActionExpand(MenuItem item) {
                    hideProgressBar();
                    return true;
                }

                @Override
                public boolean onMenuItemActionCollapse(MenuItem item) {
                    showProgressBar();
                    selectItem(lastSelectedItemPosition);
                    return true;
                }
            });
        }
}
Run Code Online (Sandbox Code Playgroud)

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

4
推荐指数
1
解决办法
3924
查看次数

ListView过滤器正确过滤但显示错误的结果

我有一个自定义Adapter,我用来显示自定义对象ListView.此外,我使用了一个SearchView允许我搜索ListView并过滤掉结果的.但是,当我尝试输入搜索时,我注意到了一些奇怪的行为.只要我搜索列表中的项目,项目就会显示在过滤器中 - 但是,项目始终显示在列表顶部.如果列表中有10个项目,并且搜索产生5个匹配项,则结果将显示列表中的前5个项目而不是5个实际匹配项目.例如,考虑一下这个列表上有6个摩托车头盔:

  • 图标
  • 哈雷戴维森
  • 乔火箭队
  • 秀爱
  • 雷神

如果我搜索"ho",结果列表应如下所示:

  • S ho ei
  • T ho r

但是,我得到的列表是前两项:

  • 图标

我无法弄清楚搜索无法正常工作的原因.任何帮助,将不胜感激.我的代码如下所示......

HelmetActivity.java

public class HelmetActivity extends ActionBarActivity implements
        SearchView.OnQueryTextListener{

    private Menu menu;
    private ListView listView;
    private HelmetAdapter helmetAdapter;
    private List<Helmet> arrayList;
    private SearchManager searchManager;
    private SearchView searchView;
    private MenuItem searchMenuItem;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.helmet_activity);
        ActionBar actionBar = getSupportActionBar();
        actionBar.setElevation(0);
        listView = (ListView) findViewById(R.id.helmet_listview);
        listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        arrayList = new ArrayList<Helmet>();
        listView.setLongClickable(true); …
Run Code Online (Sandbox Code Playgroud)

java android android-listview android-adapter searchview

4
推荐指数
1
解决办法
704
查看次数

更改searchView的光标颜色

我知道这个问题已经发布了数百万次,但我无法为我的案例找到一个有效的解决方案.

我需要更改searchView的光标颜色.我没有searchView的xml定义,我以编程方式使用它.

这是我的代码:

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

    SearchManager manager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView search = (SearchView) menu.findItem(R.id.action_search).getActionView();
    search.setSearchableInfo(manager.getSearchableInfo(getComponentName()));

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

我正在使用这个: import android.support.v7.widget.SearchView;

谢谢

android searchview

4
推荐指数
1
解决办法
6323
查看次数

强制在android的searchview中写大写

我需要强制用户在searchview v7中使用大写字母,您知道这样做的方法吗?与editText中使用的类似:

filter_text.setFilters(new InputFilter[]{new InputFilter.AllCaps()});
Run Code Online (Sandbox Code Playgroud)

android android-appcompat searchview

4
推荐指数
1
解决办法
1458
查看次数

想要更改searchView的边框颜色

我想更改searchview的边框颜色.现在它变得透明了.我尝试给它造型但没有任何效果.

SearchView.xml

 <LinearLayout
        android:id="@+id/linear1"
        android:background="@android:color/white"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="1">

    <android.support.v7.widget.SearchView
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:id="@+id/searchView"
        android:background="@android:color/white"
        android:layout_marginTop="10dp"
        style="@style/CitySearchView"
        android:layout_weight="0.9"
        android:layout_marginLeft="10dp"/>
Run Code Online (Sandbox Code Playgroud)

风格= "@风格/ CitySearchView"

<style name="CitySearchView" parent="Widget.AppCompat.Light.SearchView">
        <item name="searchIcon">@drawable/blue_search_bar</item>
        <item name="colorControlActivated">@color/labelColorHighligh</item>
        <item name="colorControlNormal">@color/backgroud_user</item>
        <item name="queryBackground">@color/labelColorHighligh</item>

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

style.xml

 <LinearLayout
        android:id="@+id/linear1"
        android:background="@android:color/white"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="1">

    <android.support.v7.widget.SearchView
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:id="@+id/searchView"
        android:background="@android:color/white"
        android:layout_marginTop="10dp"
        style="@style/CitySearchView"
        android:layout_weight="0.9"
        android:layout_marginLeft="10dp"/>
Run Code Online (Sandbox Code Playgroud)

android android-view searchview android-search android-styles

4
推荐指数
1
解决办法
6115
查看次数

如何更改工具栏SearchView下划线颜色为灰色

我在扩展搜索栏时尝试更改搜索视图的下划线颜色

    SearchView.SearchAutoComplete autoCompleteTextView = (SearchView.SearchAutoComplete) searchView.findViewById(R.id.search_src_text);
    autoCompleteTextView.setCursorVisible(true);
    autoCompleteTextView.setTextColor(ContextCompat.getColor(this, R.color.textcolor_light_gray));
    autoCompleteTextView.setHintTextColor(autoCompleteTextView.getTextColors().withAlpha(255));
    autoCompleteTextView.setTextSize(16);

    View searchplate = (View)searchView.findViewById(android.support.v7.appcompat.R.id.search_plate);
    searchplate.setBackgroundResource(R.drawable.autocomplete_bg);
Run Code Online (Sandbox Code Playgroud)

在这里我用主题来改变颜色

 <style name="MySearchViewStyle" parent="Widget.AppCompat.Light.SearchView">
    <!-- Background for the search query section (e.g. EditText) -->
    <item name="queryBackground">@color/darkgray</item>

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

但没有什么对我有用.任何人帮我...

xml android toolbar searchview android-toolbar

4
推荐指数
1
解决办法
3815
查看次数

Android Actionbar SearchView更改图标并删除多余的空格

我正在实现SearchView。我已经成功添加了搜索视图及其所有功能。现在我想使其看起来很棒。

我需要进行两次更改,尝试了所有方法,但没有任何效果:

  1. 我想更改搜索图标。
  2. 我想在searchView的左侧删除多余的间距。

这是我的searchView当前的样子:

在此处输入图片说明

这就是我想做的

在此处输入图片说明

menu / menu_search_action.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">

<item
    android:id="@+id/action_search"
    android:icon="@drawable/location_icon"
    android:orderInCategory="100"
    android:title="@string/action_search"
    app:actionViewClass="android.support.v7.widget.SearchView"
    app:showAsAction="always|collapseActionView" />
Run Code Online (Sandbox Code Playgroud)

SearchCategoriesActivity.java

    @Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_search_action, menu);


    MenuItem searchItem = menu.findItem(R.id.action_search);
    searchItem.expandActionView();
    MenuItemCompat.setOnActionExpandListener(searchItem, new MenuItemCompat.OnActionExpandListener() {
        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {

            return true;
        }

        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {

            //DO SOMETHING WHEN THE SEARCHVIEW IS CLOSING
            back();
            return false;
        }
    });

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    searchView = (SearchView) MenuItemCompat …
Run Code Online (Sandbox Code Playgroud)

android android-actionbar searchview

4
推荐指数
1
解决办法
1775
查看次数