不能改变actionbarsherlock搜索查看图标 [英] couldn't change actionbarsherlock SearchView icon

查看:175
本文介绍了不能改变actionbarsherlock搜索查看图标的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我使用以下配置:

 <项目
    机器人:ID =@ + ID / menu_item_search
    机器人:actionViewClass =com.actionbarsherlock.widget.SearchView
    机器人:图标=@机器人:可绘制/ ic_menu_search
    机器人:showAsAction =ifRoom
    机器人:标题=@字符串/ ACTION_SEARCH/>

ActionBarSherlock搜索查看上不提供Android的阵营:图标

但在时

 的android:showAsAction =ifRoom | collapseActionView

图标被正确地改变,但搜索视图中关闭按钮不存在。

如何改变搜索图标,并显示在右侧搜索视图的角落按钮?

这是我的AppTheme:

 <样式名称=AppTheme父=AppBaseTheme>
    <项目名称=机器人:windowBackground> @彩色/ background_window< /项目>
    <项目名称=机器人:actionBarStyle> @风格/ ActionBarStyle< /项目>
    <项目名称=homeAsUpIndicator> @绘制/ new_indicator< /项目>
    <项目名称=机器人:homeAsUpIndicator> @绘制/ new_indicator< /项目>    <! - 动作条(搜索查看)修复 - >
    <项目名称=textColorPrimary> @彩色/ abs__primary_text_holo_light< /项目>
    <项目名称=textColorPrimaryInverse> @彩色/ abs__primary_text_holo_dark< /项目>
    <项目名称=searchDropdownBackground> @绘制/ abs__search_dropdown_dark< /项目>
    <项目名称=searchViewTextField> @绘制/ abs__textfield_searchview_holo_dark< /项目>
    <项目名称=searchViewTextFieldRight> @绘制/ abs__textfield_searchview_right_holo_dark< /项目>
    <项目名称=searchViewCloseIcon> @绘制/ abs__ic_clear< /项目>
    <项目名称=searchViewSearchIcon> @绘制/ abs__ic_voice_search< /项目>
    <项目名称=searchViewGoIcon> @绘制/ abs__ic_go< /项目>
    <项目名称=searchViewVoiceIcon> @绘制/ abs__ic_voice_search< /项目>
    &LT;项目name=\"searchAutoCompleteTextView\">@style/Widget.Sherlock.SearchAutoCompleteTextView.DarkActionBar</item>
&LT; /风格&GT;&LT;样式名称=Widget.Sherlock.SearchAutoCompleteTextView.DarkActionBar&GT;
    &LT;项目名称=?机器人:文字颜色&GT; attr指示/ textColorPrimaryInverse&LT; /项目&GT;
&LT; /风格&GT;

从清单应用程序:

 &lt;应用
    机器人:allowBackup =真
    机器人:图标=@绘制/ ic_launcher
    机器人:标签=@字符串/ APP_NAME
    机器人:主题=@风格/ AppTheme&GT;
    &LT;活动
        机器人:名字=。MainActivity
        机器人:标签=@字符串/ APP_NAME&GT;
        &所述;意图滤光器&gt;
            &lt;作用机器人:名字=android.intent.action.MAIN/&GT;            &LT;类机器人:名字=android.intent.category.LAUNCHER/&GT;
        &所述; /意图滤光器&gt;
    &LT; /活性GT;
&LT; /用途&gt;

动作条菜单:

 &LT;项目
    机器人:ID =@ + ID / menu_item_search
    机器人:图标=@绘制/ abs__ic_clear
    机器人:actionViewClass =com.actionbarsherlock.widget.SearchView
    机器人:showAsAction =ifRoom
    机器人:标题=@字符串/ ACTION_SEARCH/&GT;
&LT;项目
    机器人:ID =@ + ID / menu_item_contact
    机器人:图标=@绘制/ ic_action_user
    机器人:showAsAction =ifRoom
    机器人:标题=@字符串/ action_contact/&GT;

搜索查看菜单配置:

  SearchManager的SearchManager的=(SearchManager的)getSystemService(Context.SEARCH_SERVICE);
    搜索查看搜索查看=(搜索查看)menu.findItem(R.id.menu_item_search).getActionView();    如果(NULL!=搜索查看){
        sea​​rchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
        sea​​rchView.setIconifiedByDefault(真);
    }    SearchView.OnQueryTextListener queryTextListener =新SearchView.OnQueryTextListener(){
        公共布尔onQueryTextChange(字符串newText){
            //这是您的适配器,将被过滤
            // adapter.getFilter()过滤器(newText)。
            返回true;
        }        公共布尔onQueryTextSubmit(查询字符串){
            //这是您的适配器,将被过滤
            // adapter.getFilter()过滤器(查询);
            返回true;
        }
    };
    sea​​rchView.setOnQueryTextListener(queryTextListener);


解决方案

您可以通过设置属性为您的活动主题,做到这一点。在你styles.xml加上下面几行,并确保应用的MyTheme或任何你想调用它要么您的应用程序或活动在您的搜索视图的生活。我还添加了searchAutoCompleteTextView的属性,它可以让你自定义文本的颜色和这样的,如果你想。

 &LT;样式名称=MyTheme的父=Theme.Sherlock&GT;
            &LT;项目名称=searchViewCloseIcon&GT; @绘制/ YOUR_CLOSE_ICON&LT; /项目&GT;
            &LT;项目名称=searchViewSearchIcon&GT; @绘制/ YOUR_SEARCH_ICON&LT; /项目&GT;
            &LT;项目名称=searchAutoCompleteTextView&GT; @风格/ searchTextView&LT; /项目&GT;
    &LT; /风格&GT;    &LT;样式名称=searchTextView父=Widget.Sherlock.SearchAutoCompleteTextView&GT;
            &LT;项目名称=机器人:文字颜色&GT; @android:彩色/白色&LT; /项目&GT;
            &LT;项目名称=机器人:textColorHint&GT; @android:彩色/黑白LT; /项目&GT;
    &LT; /风格&GT;

When I use following configuration:

<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"/>

ActionBarSherlock SearchView doesn't react on provided android:icon

but in case of

android:showAsAction="ifRoom|collapseActionView"

icon is changed correctly but close button inside search view is absent.

How to change search icon and show close button in the right search view corner ?

This is my 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>

application from manifest:

<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>

actionbar menu:

<item
    android:id="@+id/menu_item_search"
    android:icon="@drawable/abs__ic_clear"
    android:actionViewClass="com.actionbarsherlock.widget.SearchView"        
    android:showAsAction="ifRoom"
    android:title="@string/action_search"/>    
<item
    android:id="@+id/menu_item_contact"
    android:icon="@drawable/ic_action_user"
    android:showAsAction="ifRoom"
    android:title="@string/action_contact"/>  

SearchView menu configuration:

SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView) menu.findItem(R.id.menu_item_search).getActionView();

    if (null != searchView) {
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
        searchView.setIconifiedByDefault(true);         
    }

    SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
        public boolean onQueryTextChange(String newText) {
            // this is your adapter that will be filtered
            // adapter.getFilter().filter(newText);
            return true;
        }

        public boolean onQueryTextSubmit(String query) {
            // this is your adapter that will be filtered
            // adapter.getFilter().filter(query);
            return true;
        }
    };
    searchView.setOnQueryTextListener(queryTextListener);

解决方案

You can accomplish this by setting an attribute for your activity theme. In your styles.xml add the following lines and make sure to apply MyTheme or whatever you want to call it to either your application or the activity where your search view lives. I've also added the "searchAutoCompleteTextView" attribute which will allow you to customize the text color and such if you would like to.

    <style name="MyTheme" parent="Theme.Sherlock">
            <item name="searchViewCloseIcon">@drawable/YOUR_CLOSE_ICON</item>
            <item name="searchViewSearchIcon">@drawable/YOUR_SEARCH_ICON</item>
            <item name="searchAutoCompleteTextView">@style/searchTextView</item>
    </style>

    <style name="searchTextView" parent="Widget.Sherlock.SearchAutoCompleteTextView">
            <item name="android:textColor">@android:color/white</item>
            <item name="android:textColorHint">@android:color/black</item>
    </style>

这篇关于不能改变actionbarsherlock搜索查看图标的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆