我想禁用搜索视图组件内显示的Mag图标。任何想法如何引用它,并将其删除或替换为另一个可绘制的?Android SearchView图标
回答
在你的主题:
<style name="Theme" parent="Your parent theme">
<item name="android:searchViewSearchIcon">@android:drawable/ic_search</item>
</style>
编辑:
searchViewSearchIcon
是私有属性。因此,此答案无效(在本机ActionBar上)。
将其设置为'@android:color/transparent'将其删除,或将其更改为您想要的。 –
@Mattias非常感谢:D –
是否有任何可以修改的地方? –
由于该问题的措辞中没有提及ActionBarSherlock
(标签除外),并且添加了评论,说明接受的答案对标准和/或支持库操作栏不起作用,所以我正在发布另一个回答。下面是onCreate
Java代码:
// obtain action bar
ActionBar actionBar = getSupportActionBar();
// find SearchView (im my case it's in a custom layout because of left alignment)
View v = actionBar.getCustomView();
SearchView searchView = (SearchView)v.findViewById(R.id.search_view);
ImageView icon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon);
// method 1: does not work persistently, because the next line
// should be probably called after every manipulation with SearchView
// icon.setVisibility(View.GONE);
// method 2: working code
icon.setAdjustViewBounds(true);
icon.setMaxWidth(0);
icon.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
icon.setImageDrawable(null);
根据这一post,而(在我的情况android-support-v7-appcompat
)使用从支持库SearchView
与setIconifiedByDefault(false)
的图标显示编辑文本框(SearchAutoComplete
)之外。否则(setIconifiedByDefault(true)
)它显示在框内。所提供的代码默认情况下用于禁用“图标化”,并且可能需要进行一些更改才能使用“图标化”搜索视图。我不知道是否同样适用于ActionBarSherlock
。
希望这会有所帮助。
我正在使用appcompat SearchView和我有图标里面编辑文本框和我不能让它消失。你有其他想法吗? – AndrewS
你应该检查你的库是哪个版本,并查看它的源代码,特别是在布局文件中。例如,如果你看看[这个Android源码](http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.3_r1/frameworks/base/core /res/res/layout/search_view.xml),你会看到'search_mag_icon'在'search_plate'之外。通过源代码,您可以推导出在布局中“查找”哪些元素。 – Stan
我有SupportLibrary的最后一个版本,并且在资源中search_mag_icon位于任何地方。可能是那个图标不是search_mag_icon,而是SearchAutoComplete里面的一些图标? 我如何找到资源? – AndrewS
如果您使用的是v7应用程序compat库,则可以在主题中轻松更改此设置。在从AppCompat主题延伸的主题中,只需添加一条线,如:
<item name="searchViewSearchIcon">@drawable/ic_search</item>
此图标为提示。所以你可以简单地设置新的提示文本。
int searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
EditText searchPlate = (EditText) searchView.findViewById(searchPlateId);
searchPlate.setHint("Search");
如果你想要的图标作为提示文本使用spanable串ImageSpan
int searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
EditText searchPlate = (EditText) searchView.findViewById(searchPlateId);
searchPlate.setTextColor(getResources().getColor(R.color.search_text_color));
SpannableString string = new SpannableString(" ");
Drawable d = getResources().getDrawable(R.drawable.ic_search);
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BOTTOM);
string.setSpan(span, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
searchPlate.setHint(string);
要删除的提示搜索按钮:
mNearMeSearchBar = (SearchView) mView.findViewById(R.id.nearme_search_component_nearme_edittext);
mNearMeSearchBar.setIconifiedByDefault(false); //Removes Search Hint Icon
要更改搜索按钮绘制:
int searchImgId = getResources().getIdentifier("android:id/search_mag_icon", null, null);
ImageView v = (ImageView) mNearMeSearchBar.findViewById(searchImgId);
v.setImageResource(R.drawable.ic_compass);
这些行雷莫VED放大镜:
//remove search icon
mSearchView.setIconifiedByDefault(false);
ImageView icon = (ImageView) mSearchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon);
icon.setVisibility(View.GONE);
你必须在你的菜单项中加入这一行android:iconifiedByDefault="@android:color/transparent"
<item
android:id="@+id/activity_home_action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/activity_home_search_title"
android:iconifiedByDefault="@android:color/transparent"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="always|collapseActionView" />
也可以使编程searchView.setIconifiedByDefault(true);
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
getMenuInflater().inflate(R.menu.home, menu);
MenuItem searchMenuItem = menu.findItem(R.id.activity_home_action_search);
SearchView searchView = (SearchView) searchMenuItem.getActionView();
searchView.setIconifiedByDefault(true);
}
你必须定制SearchView
风格像这个:
<style name="MySearchViewStyle" parent="Widget.AppCompat.SearchView">
<!-- Search button icon -->
<item name="searchIcon">@drawable/ic_arrow_back</item>
</style>
然后将其添加到您的AppTheme
。
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- your other colors and styles -->
<item name="searchViewStyle">@style/MySearchViewStyle</item>
</style>
而且使用标签style
它应用到搜索视图:
<android.support.v7.widget.SearchView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/searchView"
android:layout_height="wrap_content"
android:layout_width="match_parent"
app:queryHint="@string/search_hint"
android:focusable="true"
android:focusableInTouchMode="true"
style="@style/MySearchViewStyle"
app:iconifiedByDefault="false" />
希望它能帮助!
在你的主题风格包括此:
<style name="YourTheme.Toolbar">
<item name="searchViewStyle">@style/YourActionBarSearch</item>
<item name="editTextColor">@color/your_ab_text_color</item>
<item name="android:textColorHint">@color/your_ab_hint_color</item>
</style>
您现在可以searchViewStyle
定义搜索查看的风格,editTextColor
将设置在搜索框中的文本的颜色。通过设置android:textColorHint
,您还可以设置提示的颜色,例如“搜索...”。
<style name="YourActionBarSearch" parent="@style/Widget.Holo.SearchView">
<item name="searchIcon">@drawable/ic_ab_search</item>
<item name="queryBackground">@null</item>
<item name="submitBackground">@null</item>
<item name="searchHintIcon">@null</item>
<item name="defaultQueryHint">@null</item>
<item name="closeIcon">@drawable/ic_ab_small_search_close</item>
</style>
这会根据您的喜好调整您的搜索视图,或多或少。字段searchIcon
是操作栏中的图标。 字段searchHintIcon
是搜索字段中提示左侧的小图标,您在问题中询问您的问题;将其设置为@null
以删除图标。字段closeIcon
是搜索字段右侧的关闭图标。
在搜索查看XML组件旁边添加:
app:searchHintIcon="@null"
- 1. SearchView Android中的自定义图标
- 2. Android - SearchView和溢出MenuItem图标颜色
- 3. Android SearchView
- 4. Android SearchView在提示图标后更改光标位置
- 5. 在searchview中更改x标记图标
- 6. searchview自定义关闭图标
- 7. 如何更改SearchView默认图标?
- 8. 如何删除SearchView删除图标
- 9. Android Actionbar SearchView
- 10. SearchView由EditText android
- 11. android fragmentList searchview
- 12. 如何更改searchview图标的颜色?
- 13. Android中展开的SearchView中图标的自定义颜色
- 14. Android Actionbar SearchView更改图标并删除多余间距
- 15. Android SearchView筛选器列表视图
- 16. Android SearchView过滤器列表视图
- 17. 在searchview中自定义关闭图标
- 18. 从更改中禁用SearchView图标
- 19. Android SearchView AutocompleteTextView showdropdown BadTokenException
- 20. Android操作栏searchview
- 21. SearchView in Android酒吧
- 22. Android SearchView格式化
- 23. android actionbar searchview icon change
- 24. 在Android SearchView原因视图设置图标化为false无法搜索
- 25. Android SearchView setOnQueryTextListener不工作?
- 26. Intent is not triggered in android searchview
- 27. Firebase数据上的Android Searchview
- 28. android自定义searchView圆角
- 29. Android SearchView不起作用
- 30. Android SearchView does not enter onQueryTextChange
想知道为什么会有人下来投票的问题吗? –
SearchView图标下面的白线怎么样 - 如何定制它? – AndrewS
你有没有想过这个? – theblang