我正在构建一个示例应用程序来演示带有过滤器和其他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) 当我使用以下配置时:
<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支持库我实现了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
我正在使用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
我有一个自定义Adapter,我用来显示自定义对象ListView.此外,我使用了一个SearchView允许我搜索ListView并过滤掉结果的.但是,当我尝试输入搜索时,我注意到了一些奇怪的行为.只要我搜索列表中的项目,项目就会显示在过滤器中 - 但是,项目始终显示在列表顶部.如果列表中有10个项目,并且搜索产生5个匹配项,则结果将显示列表中的前5个项目而不是5个实际匹配项目.例如,考虑一下这个列表上有6个摩托车头盔:
如果我搜索"ho",结果列表应如下所示:
但是,我得到的列表是前两项:
我无法弄清楚搜索无法正常工作的原因.任何帮助,将不胜感激.我的代码如下所示......
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) 我知道这个问题已经发布了数百万次,但我无法为我的案例找到一个有效的解决方案.
我需要更改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;
谢谢
我需要强制用户在searchview v7中使用大写字母,您知道这样做的方法吗?与editText中使用的类似:
filter_text.setFilters(new InputFilter[]{new InputFilter.AllCaps()});
Run Code Online (Sandbox Code Playgroud) 我想更改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
我在扩展搜索栏时尝试更改搜索视图的下划线颜色
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)
但没有什么对我有用.任何人帮我...
我正在实现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)