Ho il seguente layout di menu per il mio ActionBar:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/itemSearch"
android:icon="@drawable/actionbar_icon_search"
android:showAsAction="ifRoom|collapseActionView"
android:actionViewClass="android.widget.SearchView"
android:title="Search"/>
</menu>
Ed ecco il codice di installazione:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.actionbar_default, menu);
SearchView searchView=(SearchView) menu.findItem(R.id.itemSearch).getActionView();
int searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
View searchEditText = searchView.findViewById(searchPlateId);
((TextView) searchEditText).setTextColor(Color.WHITE);
searchView.setOnCloseListener(new OnCloseListener() {...});
searchView.setOnQueryTextListener(new OnQueryTextListener() {...});
}
Tutto è ok, tranne che per una cosa: sul mio tablet Asus (TF-201, Android 3.2.1) la grafica è sfocata:
Se rimuovo android:actionViewClass="android.widget.SearchView"
, tutto sembra normale:
Questo problema non è riprodotto sull'emulatore 4.1.2. Ho provato a lasciare solo il codice di inflazione del menu nel mio onCreateOptionsMenu()
ma questo non ha aiutato.
Come posso risolvere questo?
risposte:
4 per risposta № 1Quindi ho risolto la soluzione, tuttavia, dichiara la giusta compatibilità solo per API 14 e successive, se non si utilizza la libreria ActionBarSherlock.
È importante connettersi a Contesto a tema di applicazione, altrimenti si ottiene il design più basso possibile per SearchView (icone sfocate)
Creazione di SearchView a livello di codice
FRAMMENTO
SearchView searchView =
new SearchView(getActivity().getActionBar().getThemedContext());
ATTIVITÀ
SearchView searchView = new SearchView(getActionBar().getThemedContext());
Seconda soluzione (compatibilità ABS, API 8+)
FRAMMENTO SHERLOCK AZIONE BAR
SearchView searchView =
new SearchView(getSherlockActivity().getSupportActionBar().getThemedContext());
AZIONE BAR SHERLOCK ATTIVITÀ
SearchView searchView = new SearchView(getSupportActionBar().getThemedContext());
Terza soluzione (API 11+)
In alcuni casi, impostazione SearchView.setBackgroundColor(int color)
rende l'icona meno sfocata, prova Colore bianco o Colore nero
Nota che questo cambi il colore di sfondo per MenuItem sia esso collassato o meno, e ad es. utilizzando Theme Holo.Light.DarkActionBar è necessario utilizzare il colore giusto, in base al proprio stile ActionBar.
2 per risposta № 2
Ho avuto lo stesso problema ma altre risposte non hanno risolto il mio problema. Sto estendendo la mia lezione di attività da AppCompatActivity
. La mia icona della vista di ricerca era sfocata su Android 4. * e andava bene su Android 5. * senza alcun problema.
Ho cambiato il mio xml con questo:
<item android:id="@+id/action_search"
android:icon="@drawable/ic_search_white_24dp"
app:showAsAction="always"
app:actionViewClass="android.support.v7.widget.SearchView"
android:iconifiedByDefault="true" />
E importato
import android.support.v7.widget.SearchView;
Invece di import android.widget.SearchView;
E problema risolto.