不能改变actionbarsherlock搜索查看图标 [英] couldn't change actionbarsherlock SearchView icon
问题描述
当我使用以下配置:
<项目
机器人: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!=搜索查看){
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(真);
} SearchView.OnQueryTextListener queryTextListener =新SearchView.OnQueryTextListener(){
公共布尔onQueryTextChange(字符串newText){
//这是您的适配器,将被过滤
// adapter.getFilter()过滤器(newText)。
返回true;
} 公共布尔onQueryTextSubmit(查询字符串){
//这是您的适配器,将被过滤
// adapter.getFilter()过滤器(查询);
返回true;
}
};
searchView.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屋!