2012-12-22 64 views
29

我想禁用搜索視圖組件內顯示的Mag圖標。任何想法如何引用它,並將其刪除或替換爲另一個可繪製的?Android SearchView圖標

enter image description here

+3

想知道爲什麼會有人下來投票的問題嗎? –

+0

SearchView圖標下面的白線怎麼樣 - 如何定製它? – AndrewS

+0

你有沒有想過這個? – theblang

回答

6

在你的主題:

<style name="Theme" parent="Your parent theme"> 
<item name="android:searchViewSearchIcon">@android:drawable/ic_search</item> 
</style> 

編輯:
searchViewSearchIcon是私有屬性。因此,此答案無效(在本機ActionBar上)。

+3

將其設置爲'@android:color/transparent'將其刪除,或將其更改爲您想要的。 –

+0

@Mattias非常感謝:D –

+0

是否有任何可以修改的地方? –

14

由於該問題的措辭中沒有提及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)使用從支持庫SearchViewsetIconifiedByDefault(false)的圖標顯示編輯文本框(SearchAutoComplete)之外。否則(setIconifiedByDefault(true))它顯示在框內。所提供的代碼默認情況下用於禁用「圖標化」,並且可能需要進行一些更改才能使用「圖標化」搜索視圖。我不知道是否同樣適用於ActionBarSherlock

希望這會有所幫助。

+0

我正在使用appcompat SearchView和我有圖標裏面編輯文本框和我不能讓它消失。你有其他想法嗎? – AndrewS

+0

你應該檢查你的庫是哪個版本,並查看它的源代碼,特別是在佈局文件中。例如,如果你看看[這個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

+0

我有SupportLibrary的最後一個版本,並且在資源中search_mag_icon位於任何地方。可能是那個圖標不是search_mag_icon,而是SearchAutoComplete裏面的一些圖標? 我如何找到資源? – AndrewS

1

如果您使用的是v7應用程序compat庫,則可以在主題中輕鬆更改此設置。在從AppCompat主題延伸的主題中,只需添加一條線,如:

<item name="searchViewSearchIcon">@drawable/ic_search</item> 
7

此圖標爲提示。所以你可以簡單地設置新的提示文本。

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); 
2

要刪除的提示搜索按鈕:

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); 
1

這些行雷莫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); 
2

你必須在你的菜單項中加入這一行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); 
} 
2

你必須定製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" /> 

希望它能幫助!

0

在你的主題風格包括此:

<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是搜索字段右側的關閉圖標。

0

在搜索查看XML組件旁邊添加:

app:searchHintIcon="@null"