2014-10-10 8 views
6

क्या खोज दृश्य की परिणाम सूची पूरी स्क्रीन चौड़ाई पर कब्जा करने का कोई तरीका है? मैंने SearchView के लिए कस्टम लेआउट का उपयोग करने का प्रयास किया है, लेकिन यह खोज परिणाम सूची की चौड़ाई को नहीं बदलता है। स्क्रीनशॉट देखें:खोज दृश्य परिणाम सूची चौड़ाई

enter image description here

+0

मुझे लगता है कि खोज परिणाम चौड़ाई खोज संपादित करें पाठ चौड़ाई – Praveen

+0

@ मेरे कर्सर एडाप्टर में पैरावेन पर निर्भर करता है I चौड़ाई MATCH_PARENT के साथ दृश्य को बढ़ाता है। –

+0

अपना कोड और कस्टम एडाप्टर लेआउट पोस्ट करें –

उत्तर

21

हाँ, यह संभव है। इसे प्राप्त करने के लिए हमें न केवल वस्तुओं के लिए पूरे DropDownView की चौड़ाई निर्धारित करनी चाहिए। हम AutoCompleteTextView के setDropDownWidth पर कॉल करके इसे सेट कर सकते हैं। लेकिन एक समस्या है। DropDownView की चौड़ाई और क्षैतिज ऑफ़सेट की गणना SearchView के अंदर की जाती है जब भी इसकी सीमा बदल जाती है। वर्कअराउंड प्राप्त करने के लिए हम SearchView पर अपने OnLayoutChangeListener जोड़ सकते हैं जहां हम DropDownView की ऊंचाई की गणना और सेट करते हैं। निम्नलिखित कोड पूरी तरह से AppCompat साथ काम कर रहा है:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // inflate our menu 
    getMenuInflater().inflate(R.menu.search_menu, menu); 

    // find MenuItem and get SearchView from it 
    MenuItem searchMenuItem = menu.findItem(R.id.search); 
    SearchView searchView = (SearchView) searchMenuItem.getActionView(); 

    // id of AutoCompleteTextView 
    int searchEditTextId = R.id.search_src_text; // for AppCompat 

    // get AutoCompleteTextView from SearchView 
    final AutoCompleteTextView searchEditText = (AutoCompleteTextView) searchView.findViewById(searchEditTextId); 
    final View dropDownAnchor = searchView.findViewById(searchEditText.getDropDownAnchor()); 
    if (dropDownAnchor != null) { 
     dropDownAnchor.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { 
      @Override 
      public void onLayoutChange(View v, int left, int top, int right, int bottom, 
             int oldLeft, int oldTop, int oldRight, int oldBottom) { 

       // calculate width of DropdownView 


       int point[] = new int[2]; 
       dropDownAnchor.getLocationOnScreen(point); 
       // x coordinate of DropDownView 
       int dropDownPadding = point[0] + searchEditText.getDropDownHorizontalOffset(); 

       Rect screenSize = new Rect(); 
       getWindowManager().getDefaultDisplay().getRectSize(screenSize); 
       // screen width 
       int screenWidth = screenSize.width(); 

       // set DropDownView width 
       searchEditText.setDropDownWidth(screenWidth - dropDownPadding * 2); 
      } 
     }); 
    } 

    return super.onCreateOptionsMenu(menu); 
} 

आप Holo का उपयोग करते हैं सिर्फ एक नीचे करने के लिए लाइन int searchEditTextId = R.id.search_src_text; बदलने के लिए:

int searchEditTextId = getResources().getIdentifier("android:id/search_src_text", null, null); 
+1

ईश्वर, मुझे सर्च व्यू विजेट से नफरत है – mdelolmo

+1

मेरा दिन बचाया, धन्यवाद! –

+0

यह केवल एंड्रॉइड 5.0+ के लिए काम करता है। लेकिन मुझे एंड्रॉइड 4.3 की आवश्यकता है – Alexei

-1

आप SearchAutoComplete वस्तु के संदर्भ में प्राप्त करना चाहिए जो मेरे मामले में android.support.v7.widget.SearchView का उपयोग करके, उसके आकार को सेट करें, कृपया मेरा उत्तर यहां देखें:

https://stackoverflow.com/a/43480908/5255624

संबंधित मुद्दे