我试图在ICS +中的SearchView小部件上更改闪烁光标的颜色.我尝试过以下方法:
<item name="android:textCursorDrawable">@null</item>到我的主题android:textCursorDrawable="@null"直接在SearchView上设置我在这里阅读答案(SearchView中的自定义光标颜色),但是searchAutoCompleteTextView没有非ABS样式,所以无法尝试这个.我还寻找了一个Java方法来设置文本光标drawable,但找不到 - 我正在修改Java中SearchView的其他方面,并且如果有可用的方法,可以使用光标这样做.
我已经非常广泛地定制了SearchView,但最后一个改变是让它看起来不正确 - 光标在白色背景上是白色的,所以它不容易看到.我可以尝试其他任何想法吗?
我正在尝试使用新的AppCompat v21设置SearchView小部件的样式,但我遇到了一些问题.无论我在"suggestionRowLayout"属性上设置什么布局,它都什么都不做.SearchView的建议下拉列表保持不变.
我遇到的其他问题是当"强调颜色"与"原色"颜色相同时,在搜索视图中无法区分插入符号在哪里.您知道如何更改SearchView中的重音颜色仅适用于那里吗?我发现Play Music有同样的问题.
我正在关注Android开发者博客的指南:
http://android-developers.blogspot.com.es/2014/10/appcompat-v21-material-design-for-pre.html
android searchview android-support-library material-design android-5.0-lollipop
我在android应用程序中使用searchview(searchview不是操作栏的一部分).我想删除搜索图标/ searchview左侧的空格.我搜索了很多,并收到了适用于搜索视图的答案,这些视图是操作栏的一部分.
我尝试使用android:layout_gravity,android:gravity,但它们似乎没有用.我想过使用android:contentInsetStart,android:contentInsetLeft,但这些选项不适用于searchview(这不是动作栏的一部分).
[ http://postimg.org/image/xz6pf8yp5/][1]
(由于我的声誉不到10,因此无法在此处直接发布图片)
serchview位于LinearLayout(垂直方向).这是我正在使用的代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".MainActivity"
tools:showIn="@layout/activity_main">
<SearchView
android:id="@+id/searchView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="2dp"
android:layout_gravity="left"
android:gravity="left"
/>
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud) 我需要在ActionBar中显示SearchView总是展开和另外一个按钮,以便用户快速访问Search Activity中的搜索字符串.
我的活动有这个菜单布局:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/action_search"
android:title="@string/action_search"
android:icon="@drawable/ic_action_search"
android:showAsAction="always"
android:actionViewClass="com.actionbarsherlock.widget.SearchView"/>
<item android:id="@+id/action_configure"
android:title="@string/action_configure"
android:icon="@android:drawable/ic_menu_preferences"
android:showAsAction="always" />
</menu>
Run Code Online (Sandbox Code Playgroud)
在Search活动类中,我按如下方式配置ActionBar:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.search, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView)menu.findItem(R.id.action_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false);
searchView.setSubmitButtonEnabled(false);
return true;
}
Run Code Online (Sandbox Code Playgroud)
问题是,如果我这样做,searchView.setIconifiedByDefault(false);我会看到这张图片:

您可以注意到没有第二个菜单项.在这里,如果我设置android:showAsAction ="always | collapseActionView",它默认会折叠,但我现在可以看到第二项:

在上图中我已按下搜索图标
有两个问题我无法弄清楚:
我想搜索RecyclerView,我有List<BaseOfCards> (BaseOfCards是我的getter和setter类)我的RecyclerViewAdapter:
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {
private LayoutInflater inflater;
private List<BaseOfCards> items;
//private int itemLayout;
//String cardvalue;
private Activity mActivity;
public RecyclerViewAdapter(Activity mActivity, Context context, List<BaseOfCards> items) {
this.mActivity = mActivity;
inflater = LayoutInflater.from(context);
this.items = items;
//this.itemLayout = itemLayout;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.custom_row, parent, false);
MyViewHolder holder = new MyViewHolder(view, mActivity);
return holder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
BaseOfCards …Run Code Online (Sandbox Code Playgroud) 当用户从自动完成建议中选择文本时,我想添加空格,所以当他继续输入时,他将从一个新单词开始.
我尝试使用它,TextWatcher但我得到了IndexOutOfBoundsException.
有什么建议?

我使用的文本观察者是:
private class AddSpaceTextWatcher implements TextWatcher{
boolean shouldAddSpace = false;
@Override
public void beforeTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (count - before > 1) // check that the new input is not from the keyboard
shouldAddSpace = true;
}
@Override
public void afterTextChanged(Editable editable) {
if (shouldAddSpace) {
shouldAddSpace = false;
mAutoCompleteTextView.setText(" ");
}
}
} …Run Code Online (Sandbox Code Playgroud) 简短:当我单击 SearchViewIcon 时,SearchView 不会折叠/展开。
长:
我正在使用 SearchView 在我的 MainActivity 中的 Fragment 中过滤 RecyclerView。
当我点击 SearchViewIcon 时(SearchView 默认是图标化的)。我使用以下代码打开带有正确片段的选项卡:
searchView.setOnSearchClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewPager.setCurrentItem(2, false);
}
});
Run Code Online (Sandbox Code Playgroud)
带有正确片段的选项卡按预期打开。还显示了文本输入,但 SearchView 保持图标化。(见下图。)
我在 XML 中的 SearchView:
<item
android:id="@+id/action_search"
android:orderInCategory="1"
android:icon="@android:drawable/ic_menu_search"
android:title="@string/menu_item_search_title"
app:showAsAction="ifRoom"
app:queryHint="Search name or function"
app:actionViewClass="android.support.v7.widget.SearchView" />
Run Code Online (Sandbox Code Playgroud)
我已经尝试过的事情:
将我的 showAsAction 设置为 always 或 ifRoom|collapseActionView
app:showAsAction="always"
app:showAsAction="ifRoom|collapseActionView"
Run Code Online (Sandbox Code Playgroud)
请求关注我的 SearchView:
searchView.requestFocus();
Run Code Online (Sandbox Code Playgroud)
扩展我的 SearchViewItem:
MenuItem searchViewItem = menu.findItem(R.id.action_search);
searchViewItem.expandActionView();
Run Code Online (Sandbox Code Playgroud)
但这些事情都没有奏效......
编辑就像标题所说,如果我再次单击 SearchViewIcon,SearchView 会展开。
我正在使用第三方库创建一个可搜索的微调器.我在我的应用程序中添加了库类(SearchableListDialog,SearchableSpinner).一切都工作正常,但仍然是我面临的一个问题,例如,在搜索视图小部件中,如果我搜索Abc,我没有将结果过滤为Abc但是当点击列表视图项时,结果显示项目为ABC.这就像位置是项目的更改,但列表没有显示可搜索的结果.我不知道我哪里错了.我多次修改代码但没有得到理想的结果.
Searchable Spinner xml代码:
<com.example.my.currencyconverterapp.activity.SearchableSpinner
android:id="@+id/spinner"
android:layout_below="@+id/rl_currency_converterted_data"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)
这是我的片段代码,我正在为可搜索的微调器设置适配器.
countriesCustomAdapterInr = new CountriesCustomAdapterInr(getActivity(), R.layout.custom_spinner_items, arrayList,res);
spinner.setAdapter(countriesCustomAdapterInr);
assert spinner != null;
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(getActivity(), ""+arrayList.get(i).getFull_name()+i, Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {}
});
Run Code Online (Sandbox Code Playgroud)
这是第三方SearchableSpinner类:
public class SearchableSpinner extends android.support.v7.widget.AppCompatSpinner implements View.OnTouchListener,
SearchableListDialog.SearchableItem {
public static final int NO_ITEM_SELECTED = -1;
private Context _context;
private List _items;
private SearchableListDialog _searchableListDialog;
private boolean _isDirty;
private ArrayAdapter _arrayAdapter; …Run Code Online (Sandbox Code Playgroud) android listview android-arrayadapter android-spinner searchview
我正在尝试SearchView在工具栏中设置自定义样式,但我发现的所有建议解决方案均无效,并且未应用该样式。我正在使用androidx.appcompat.widget.SearchViewSearchView的版本。
在styles.xml我为 SearchView 创建了一个自定义样式并将其应用到 AppTheme 但 SearchView 的外观不会改变。我已经尝试了多种不同的风格属性,但没有任何改变。
样式.xml:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="searchViewStyle">@style/CustomSearchViewStyle</item>
</style>
<style name="AppTheme.Toolbar" parent="Base.ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="searchViewStyle">@style/CustomSearchViewStyle</item>
</style>
<style name="CustomSearchViewStyle" parent="Widget.AppCompat.SearchView">
<item name="searchIcon">@drawable/ic_custom_search</item>
<item name="suggestionRowLayout">@layout/custom_search_row</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
菜单.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_search"
android:icon="@drawable/ic_search_white_24dp"
android:orderInCategory="100"
android:title="@string/search"
app:actionViewClass="androidx.appcompat.widget.SearchView"
app:showAsAction="collapseActionView|ifRoom" />
</menu>
Run Code Online (Sandbox Code Playgroud)
我只想修改最近搜索建议列表中的时钟图标,但未应用自定义样式,我找不到任何其他方法来做到这一点。
编辑 1:
我刚刚将相同的内容添加androidx.appcompat.widget.SearchView到常规布局文件中,然后正确应用了样式。但是当用作actionViewClass在菜单中使用时,样式将被忽略。您知道如何在用作 时也应用样式actionViewClass吗?