7

Sto utilizzando la libreria appcompat con una barra degli strumenti e ho implementato una vista di ricerca nella mia app. Ma voglio rimuovere l'icona della vista di ricerca quando è espansa.

qui è il mio menu file xml:
Rimuovi l'icona della vista di ricerca dal testo del suggerimento

<item 
    android:id="@+id/action_search" 
    android:icon="@drawable/ic_search" 
    android:title="@string/action_search" 
    app:actionViewClass="android.support.v7.widget.SearchView" 
    app:showAsAction="ifRoom|collapseActionView"/> 

e questo è come mi gonfiare il menù:

getMenuInflater().inflate(R.menu.main, menu); 
SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search)); 
searchView.setQueryHint(getString(R.string.search_hint)); 
return super.onCreateOptionsMenu(menu); 

questo è quello che voglio rimuovere:

enter image description here

+0

Check: http://stackoverflow.com/questions/14606294/remove-icon-logo- from-action-bar-on-android –

+0

Controlla [questo] (http://stackoverflow.com/questions/29633952/how-to-delete-or-change-the-searchview-icon-inside-the-searchview-actionbar/33229228 # 33229228) out – Sarasranglt

risposta

0

Cerca nella risposta SumeetP in this question. Non sono sicuro che funzioni perché non l'ho mai usato. Ottiene l'icona di ricerca come ImageView. Quindi immagino che puoi semplicemente impostare l'immagine su android.R.color.transparent in modo che non sia visibile.

+0

Nasconde l'immagine sulla barra di azione non nella vista di ricerca espansa imo. – Dhina

2

Nella tua onCreateOptionsMenu

int searchPlateId = searchView.getContext().getResources() 
      .getIdentifier("android:id/search_src_text", null, null); 
    EditText searchPlate = (EditText) searchView 
      .findViewById(searchPlateId); 
    searchPlate.setHint(""); 
17

Questo mi ha aiutato a rimuovere l'icona di ricerca

searchView.setIconified(false); 

Se volete SearchView uso sempre ampliato proprio questo:

searchView.onActionViewExpanded(); 
+0

Perfetto, dopo aver provato ogni soluzione, questo funziona! –

2
try { 
    Field mDrawable = SearchView.class.getDeclaredField("mSearchHintIcon"); 
    mDrawable.setAccessible(true); 
    Drawable drawable = (Drawable) mDrawable.get(searchView); 
    drawable.setBounds(0, 0, 0, 0); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

setBounds fa il m Agic

+0

Ha funzionato per me – Bahu

6

Prova questo:

Nella tua app tema, aggiungere la seguente riga:

<item name="searchViewStyle">@style/MySearchViewStyle</item> 

Aggiungere definire lo stile al di sotto:

<style name="MySearchViewStyle" parent="Widget.AppCompat.SearchView"> 
    <item name="searchHintIcon">@null</item> 
</style> 
+0

Preferisco questa soluzione rispetto all'utilizzo di ID o riflessione privati. Assicurati di utilizzare la versione di supporto di SearchView (android.support.v7.widget.SearchView) – user931289

+0

Singola cosa che ha funzionato per me –

1

Se si guarda alla source Android codice per il layout di SearchView, vedrai che l'icona di ricerca ha un identificativo search_mag_icon. Quindi, in onCreateOptionsMenu,

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu_search,menu); 
    MenuItem searchViewItem = menu.findItem(R.id.search); 
    SearchView searchView = (SearchView)searchViewItem.getActionView();   
    searchView.findViewById(R.id.search_mag_icon).setVisibility(View.GONE); 
} 

Basta trovare la vista da id e impostare la sua visibilità a scomparsa.

1

Il modo più semplice è Here... In caso di AppCompat

app:iconifiedByDefault="false" 
app:searchIcon="@null" 

O in altri casi

android:iconifiedByDefault="false" 
android:searchIcon="@null" 
Problemi correlati