/ / SearchView-Zeichen in ActionBar erscheinen verschwommen - Android, Android-Actionbar

SearchView-Zeichen in ActionBar erscheinen verschwommen - Android, Android-Actionbar

Ich habe das folgende Menülayout für meine 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>

Und hier ist der Setup-Code:

@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() {...});
}

Alles ist in Ordnung, bis auf eine Sache: Auf meinem Asus-Tablet (TF-201, Android 3.2.1) sind Grafiken unscharf:

Bildbeschreibung hier eingeben

Wenn ich entferne android:actionViewClass="android.widget.SearchView"sieht alles normal aus:

Bildbeschreibung hier eingeben

Dieses Problem wird nicht auf 4.1.2-Emulator reproduziert. Ich habe versucht, nur Menü Inflation Code in meinem onCreateOptionsMenu() aber das hat nicht geholfen.

Wie behebe ich das?

Antworten:

4 für die Antwort № 1

Also habe ich die Lösung verprügelt, jedoch erklärt es die richtige Kompatibilität nur für API 14 und höher, wenn nicht die ActionBarSherlock-Bibliothek verwendet wird.


Wichtig ist mit zu verbinden Thematischer Kontext der Anwendung, sonst erhalten Sie das niedrigste mögliche Design für SearchView (verschwommene Symbole)

Programmgesteuertes Erstellen von SearchView

FRAGMENT

SearchView searchView =
new SearchView(getActivity().getActionBar().getThemedContext());

AKTIVITÄT

SearchView searchView = new SearchView(getActionBar().getThemedContext());

Zweite Lösung (ABS-Kompatibilität, API 8+)

ACTION BAR SHERLOCK FRAGMENT

SearchView searchView =
new SearchView(getSherlockActivity().getSupportActionBar().getThemedContext());

ACTION BAR SHERLOCK AKTIVITÄT

SearchView searchView = new SearchView(getSupportActionBar().getThemedContext());

Dritte Lösung (API 11+)

In einigen Fällen, Einstellung SearchView.setBackgroundColor(int color) lässt das Symbol weniger verschwommen erscheinen, versuchen Sie es Farbe weiß oder Farbe: Schwarz

Hinweis dass dies die Hintergrundfarbe für MenuItem ändert, ob nun ausgeblendet oder nicht, und z. Mit Theme Holo.Light.DarkActionBar müssen Sie die richtige Farbe entsprechend Ihrem ActionBar-Stil verwenden.


2 für die Antwort № 2

Ich habe das gleiche Problem erlebt, aber andere Antwort hat mein Problem nicht gelöst. Ich erweitere meine Aktivitätsklasse von AppCompatActivity. Mein Searchview-Symbol sah auf Android 4 * verschwommen aus und es sah auf Android 5 * ohne Probleme gut aus.

Ich habe mein XML so geändert:

  <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" />

Und importiert

import android.support.v7.widget.SearchView;

Anstatt von import android.widget.SearchView;

Und das Problem wurde behoben.