我想禁用搜索視圖組件內顯示的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
- 3. 在searchview中更改x標記圖標
- 4. searchview自定義關閉圖標
- 5. SearchView由EditText android
- 6. Android Actionbar SearchView
- 7. 如何更改SearchView默認圖標?
- 8. 如何刪除SearchView刪除圖標
- 9. Android SearchView篩選器列表視圖
- 10. Android SearchView過濾器列表視圖
- 11. 從更改中禁用SearchView圖標
- 12. SearchView in Android酒吧
- 13. Android操作欄searchview
- 14. android actionbar searchview icon change
- 15. 在Android SearchView原因視圖設置圖標化爲false無法搜索
- 16. Android SearchView空字符串
- 17. Android - SearchView的延遲擴展
- 18. Android - SearchView - setTypeface不可用
- 19. Intent is not triggered in android searchview
- 20. Android SearchView does not enter onQueryTextChange
- 21. Android SearchView setOnQueryTextListener不工作?
- 22. android自定義searchView圓角
- 23. Firebase數據上的Android Searchview
- 24. Android SearchView不起作用
- 25. 爲什麼區別LayoutInflater導致差異SearchView圖標
- 26. SearchView在ActionBar vom中的圖標AppCompat始終有一個影子
- 27. 爲什麼Searchview搜索圖標不顯示collapseActionView屬性?
- 28. 當searchview從圖標化視圖展開時發生的事件
- 29. Appcelerator Titanium:如何更改Android上的SearchView顏色? (hintText和十字圖標)
- 30. 在SearchView中自定義光標顏色
想知道爲什麼會有人下來投票的問題嗎? –
SearchView圖標下面的白線怎麼樣 - 如何定製它? – AndrewS
你有沒有想過這個? – theblang