/ / I drawable di SearchView in ActionBar appaiono sfocati - android, android-actionbar

I drawable SearchView in ActionBar appaiono sfocati - android, android-actionbar

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:

inserisci la descrizione dell'immagine qui

Se rimuovo android:actionViewClass="android.widget.SearchView", tutto sembra normale:

inserisci la descrizione dell'immagine qui

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 № 1

Quindi 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.