8

Ich versuche, das SearchView Widget mit der neuen AppCompat V21 zu stylen, aber ich habe einige Probleme. Egal welches Layout ich auf "suggestionRowLayout" -Attribut einstelle, es tut gar nichts. Die Vorschlagsliste des SearchView bleibt unverändert.Styling des SearchView Widget mit Hilfe der Support-Bibliothek v21

Andere Problem, das ich habe, ist, wenn die "Akzentfarbe" die gleiche Farbe wie die "Grundfarbe" hat, in der Searchview ist unmöglich zu unterscheiden, wo das Caret ist. Weißt du, wie ich die Akzentfarbe im SearchView ändern kann, um dort nur angewendet zu werden? Ich habe festgestellt, dass Play Music das gleiche Problem hat.

Ich folge der Führung von Android Developers Blog:

http://android-developers.blogspot.com.es/2014/10/appcompat-v21-material-design-for-pre.html

Antwort

5

Nach dem, was ich in der Search Quelle suggestionRowLayout Ressourcenwert in Search gesehen tritt auf, wenn die Attribute für die Suche Abrufen und in die Methode getSuggestionRowLayout(). Auf der anderen Seite wird die Implementierung von SuggestionAdapter der v7-Bibliothek abc_search_dropdown_item_icons_2line aufgeblasen.

Idee für dieses Problem zu umgehen:

Probieren Sie verschiedene Layout mit Hilfe von refs.xml verweist. Achten Sie darauf, gleiche Ids halten für views wie in abc_search_dropdown_item_icons_2line

<item type="layout" name="abc_search_dropdown_item_icons_2line">@layout/my_suggestion_row</item> 
+0

, das funktioniert! Aber laut [Dokumentation] (http://android-developers.blogspot.com.es/2014/10/appcompat-v21-material-design-for-pre.html) unterstützt die neue API das Styling des SearchView. Das ist, was ich vor Ihrer Abhilfe versucht haben: '' – MrBrightside

+0

Dies funktioniert nicht für mich – JDJ

0

suggestionsRowLayout wurde auch nicht für mich arbeiten.

In meinem Fall musste ich nur die Hintergrundfarbe jeder Zeile und die Textfarbe ändern.

So modifizierte ich nur das Layout der Ansicht von newView() in meinem SuggestionsAdapter zurückgegeben:

public class SuggestionsAdapter extends CursorAdapter 
{ 
    public SuggestionsAdapter(Context context, Cursor cursor) 
    { 
     super(context, cursor, false); 
    } 

    @Override 
    public void bindView(View view, Context context, Cursor cursor) 
    { 
     TextView tv = (TextView) view.findViewById(R.id.item); 

     tv.setText(cursor.getString(COL_NAME)); 
    } 

    @Override 
    public View newView(Context context, Cursor cursor, ViewGroup parent) 
    { 
     LayoutInflater inflater = (LayoutInflater) 
       context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     // I modified the layout of search_item.xml 
     View view = inflater.inflate(R.layout.search_item, parent, false); 

     return view; 
    } 
} 

search_item.xml

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:background="@color/white" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:padding="12dp" > 

    <TextView 
     android:id="@+id/item" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textColor="@color/red" /> 

</LinearLayout> 

Sie könnten natürlich auch für Sie auf den Hintergrund an einen Wähler ziehbar gesetzt Höhepunkte.

1

war mein Problem, dass die Suche nicht vom Typ android.support.v7.widget.SearchView war daher alle Styling nicht

zutraf
<item android:id="@+id/action_search" 
     android:icon="@drawable/ic_action_search" 
     android:title="@string/action_search" 
     app:showAsAction="ifRoom" 
     app:actionViewClass="android.support.v7.widget.SearchView"/> 
Verwandte Themen