2012-12-20 13 views
8

Mam następujący układ menu dla mojego ActionBar:SearchView kanału alfa w ActionBar są zamazane

<?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> 

A oto kod instalacyjny:

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

Wszystko jest ok, z wyjątkiem jednej rzeczy: na moim tabletka asus (TF 201 Android 3.2.1) grafiki rozmyty:

enter image description here

Jeśli usunąć android:actionViewClass="android.widget.SearchView", wszystko wygląda normalnie:

enter image description here

Ten problem nie jest odtwarzany na 4.1.2 emulatora. Próbowałem pozostawiać tylko kod inflacji menu w moim onCreateOptionsMenu(), ale to nie pomogło.

Jak to naprawić?

+0

W jaki sposób rozwiązałeś ten problem? –

+0

@TolgayToklar nie, nie zrobiłem. Czy zaakceptowana odpowiedź nie działa dla ciebie? –

+0

Nie, nie. Następnie rozwiązałem to przez rozszerzenie wyszukiwania z klasy appcombat v7. –

Odpowiedz

4

Więc pobiłem to rozwiązanie, jednak deklaruje prawą zgodność tylko dla API 14 i wyższych, jeśli nie używa biblioteki ActionBarSherlock.


pierwsze rozwiązanie (API 14+)

Ważne jest, aby być podłączony do wrażeń kontekście stosowania, w przeciwnym razie można uzyskać możliwie najniższe projekt dla SearchView (rozmazanych ikon)

Tworzenie SearchView programowo

FRAGMENT

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

AKTYWNOŚĆ

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

Drugie rozwiązanie (kompatybilność ABS, API 8+)

ACTION BAR SHERLOCK FRAGMENT

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

ACTION BAR SHERLOCK AKTYWNOŚĆ

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

Trzecie rozwiązanie (API 11+)

W niektórych przypadkach ustawienie SearchView.setBackgroundColor(int color) sprawia, że ​​pojawia się ikona mniej rozmyte, spróbuj Color.WHITE lub Color.BLACK

Uwaga że zmienia kolor tła dla MenuItem, czy jest zwinięty czy nie, a np. za pomocą Theme Holo.Light.DarkActionBar musisz użyć odpowiedniego koloru, zgodnie ze stylem ActionBar.

2

Doświadczyłem tego samego problemu, ale inna odpowiedź nie rozwiązała mojego problemu. Rozszerzam swoją klasę aktywności z AppCompatActivity. Moja ikona wyszukiwania wyglądała na rozmytą na Androidzie 4. * i wyglądała dobrze na Androidzie 5. * bez żadnego problemu.

zmieniłem xml do tego:

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

i importowanych

import android.support.v7.widget.SearchView; 

Zamiast import android.widget.SearchView;

i problemu ustalona.

Powiązane problemy