8

का उपयोग कर सर्च व्यू विजेट स्टाइल करना मैं नए AppCompat v21 का उपयोग करके SearchView विजेट को स्टाइल करने की कोशिश कर रहा हूं, लेकिन मुझे कुछ समस्याएं आ रही हैं। इससे कोई फर्क नहीं पड़ता कि मैंने "सुझाव RowLayout" विशेषता पर क्या लेआउट सेट किया है, यह कुछ भी नहीं करता है। SearchView की सुझाव ड्रॉपडाउन सूची वही है।समर्थन लाइब्रेरी v21

मेरी समस्या यह है कि जब "उच्चारण रंग" "प्राथमिक रंग" जैसा ही रंग होता है, तो खोज दृश्य में कैरेट कहां अंतर करना असंभव है। क्या आप जानते हैं कि मैं खोज दृश्य में उच्चारण रंग कैसे बदल सकता हूं केवल वहां लागू किया जा सकता है? मैंने पाया है कि प्ले म्यूजिक में एक ही समस्या है।

मैं से Android डेवलपर ब्लॉग गाइड अनुसरण कर रहा हूं:

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

उत्तर

5

मैं क्या SearchView में SearchView स्रोत suggestionRowLayout संसाधन मूल्य में देखा है होता है जब SearchView के लिए और की विशेषताओं का पुन: प्राप्त करने के अनुसार विधि getSuggestionRowLayout()। दूसरी तरफ v7 लाइब्रेरी के सुझाव एडाप्टर का कार्यान्वयन abc_search_dropdown_item_icons_2line बढ़ रहा है। एक समाधान के लिए

विचार:

कोशिश refs.xml की मदद से विभिन्न लेआउट को संदर्भित। सुनिश्चित करें कि आप में abc_search_dropdown_item_icons_2line

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

काम करता है यही कारण है कि लागू नहीं किया था! लेकिन [दस्तावेज़ीकरण] के अनुसार (http://android-developers.blogspot.com.es/2014/10/appcompat-v21-material-design-for-pre.html) नया एपीआई खोज दृश्य को स्टाइल करने का समर्थन करता है। Thats क्या मैं अपने तरीके को पहले की कोशिश की है: '<शैली नाम =" MySearchViewStyle "जनक =" Widget.AppCompat.SearchView "> <आइटम नाम =" suggestionRowLayout "> @ लेआउट/searchview_dropdown ' – MrBrightside

+0

यह काम नहीं कर रहा मेरे लिए – JDJ

0

suggestionsRowLayout मेरे लिए या तो काम नहीं कर रहा था के रूप में views के लिए एक ही आईडी रखना सुनिश्चित करें।

मेरे मामले में, मुझे बस प्रत्येक पंक्ति और टेक्स्ट रंग का पृष्ठभूमि रंग बदलने की आवश्यकता थी।

तो मैं सिर्फ संशोधित देखें के लेआउट मेरी SuggestionsAdapter में newView() से लौटे:

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> 

आप निश्चित रूप से क्लिक के लिए एक चयनकर्ता drawable के लिए पृष्ठभूमि सेट कर सकते हैं पर प्रकाश डाला।

1

मेरे मुद्दा यह है कि SearchView प्रकार android.support.v7.widget.SearchView का नहीं था, इसलिए सभी स्टाइल

<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"/> 
संबंधित मुद्दे