2012-11-28 17 views
7

मुझे खोज गतिविधि में खोज स्ट्रिंग में उपयोगकर्ता को त्वरित पहुंच प्रदान करने के लिए हमेशा खोज दृश्य हमेशा प्रदर्शित किया जाना चाहिए और एक्शनबार में एक और बटन दिखाना होगा।एक्शनबारशेलॉक सर्च व्यू हमेशा दिखाएं

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/action_search" 
     android:title="@string/action_search" 
     android:icon="@drawable/ic_action_search" 
     android:showAsAction="always" 
     android:actionViewClass="com.actionbarsherlock.widget.SearchView"/> 
    <item android:id="@+id/action_configure" 
     android:title="@string/action_configure" 
     android:icon="@android:drawable/ic_menu_preferences" 
     android:showAsAction="always" /> 
</menu> 

और खोजें गतिविधि कक्षा में मैं ActionBar कॉन्फ़िगर इस प्रकार है::
मैं अपने गतिविधि के लिए यह मेनू लेआउट है

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getSupportMenuInflater().inflate(R.menu.search, menu); 
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    SearchView searchView = (SearchView)menu.findItem(R.id.action_search).getActionView(); 
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 
    searchView.setIconifiedByDefault(false); 
    searchView.setSubmitButtonEnabled(false); 
return true; 
} 

समस्या यह है कि मैं इस तस्वीर को देखने के अगर मैं searchView.setIconifiedByDefault(false); करना है:
enter image description here

आप देख सकते हैं कि कोई दूसरा मेनू आइटम नहीं है। इधर, अगर मैं एंड्रॉयड सेट: showAsAction = "हमेशा | collapseActionView", यह हो जाता है डिफ़ॉल्ट रूप से संक्षिप्त, लेकिन मैं अब दूसरे मद देख सकते हैं:
enter image description here
चित्र पर ऊपर मैं पहले से ही खोज आइकन

दबाया वहाँ दो हैं समस्याओं है कि मैं समझ नहीं कर सकते हैं:

  1. मैं कैसे हमेशा दो तत्वों दिखाते हैं: विन्यास कार्रवाई के लिए विस्तृत खोज देख सकते हैं और आइकन?
  2. मैं इस बदसूरत दूसरे खोज आइकन से कैसे छुटकारा पा सकता हूं?
+0

क्या आपको समाधान मिला है? – Giuseppe

+0

नहीं, मैंने केवल SearchView को EditText में बदल दिया है और अन्य मेनू आइटम को एक्शनबार – gorodechnyj

उत्तर

3

यहाँ है आंतरिक एस छिपाने के लिए मेरा समाधान मार्च आइकन।

अपने styles.xml जहां आप अपने विषय का प्रबंधन में,

<!--Application Theme--> 
<style name="application_theme" parent="application_base_theme"> 
    <item name="searchViewSearchIcon">@android:color/transparent</item> 
    <item name="searchViewCloseIcon">@android:color/transparent</item> 
</style> 

यह हो सकता है ActionBar खोज विजेट के भीतर खोज आइकन की सभी घटनाओं बलों अपने application_theme खंड (आमतौर पर base_theme नीचे) के लिए निम्न जोड़ने पारदर्शी, और अदृश्य।

हालांकि वे अभी भी टेक्स्ट फ़ील्ड में जगह ले लेंगे, हालांकि बाईं ओर एक अदृश्य मार्जिन बनाते हैं जहां आइकन होता था। आप इसे ठीक करना चाहते हैं, आप के बजाय अपने खुद के वर्ग के साथ com.actionbarsherlock.widget.SearchView का विस्तार करने और निम्नलिखित जोड़ना होगा:

ImageView searchHintIcon = (ImageView) findViewById(R.id.abs__search_mag_icon); 
searchHintIcon.setVisibility(View.GONE); 

मैं निर्माता को यह जोड़ना होगा, लेकिन यह भी setIconified और setIconifiedByDefault ओवरराइड और इसे शामिल वहाँ भी है। जब भी आप एक्शन व्यू का विस्तार करते हैं तो यह आइकन को छिपाने के लिए मजबूर करेगा।

कार्रवाई बार के अन्य आइकन दिखा के लिए, स्थापित करने का प्रयास करें:

android:showAsAction="collapseActionView|ifRoom" 

यह बजाय उन्हें पूरी बार के बंद के लिए मजबूर कर के जब वहाँ कार्रवाई बार में पर्याप्त जगह खोज पट्टी का कारण विस्तार करने के लिए करना चाहिए, ।

HTH

+0

धन्यवाद से बाहर ले जाया है। यदि मौका होता है तो मैं इसे बाद में उपयोग करूंगा। – gorodechnyj

0

दो तत्वों के प्रदर्शन को हल करने का मेरा तरीका SearchView पर एक विशिष्ट चौड़ाई निर्धारित कर रहा था।

FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(350, FrameLayout.LayoutParams.WRAP_CONTENT); 
searchView.setLayoutParams(lp); 

कोड है कि मैं का उपयोग कर रहा है:

रेस/मेनू/main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item 
     android:id="@+id/search" 
     android:actionViewClass="com.actionbarsherlock.widget.SearchView" 
     android:showAsAction="always" 
     android:title="@string/action_search"/> 
    <item 
     android:id="@+id/settings" 
     android:showAsAction="ifRoom" 
     android:onClick="startSettingsActivity" 
     android:title="@string/action_settings"/> 
</menu> 

और मेरे गतिविधि में

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getSupportMenuInflater().inflate(R.menu.main, menu); 
    MenuItem searchViewItem = menu.findItem(R.id.search); 
    SearchView searchView = (SearchView) searchViewItem.getActionView(); 
    FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(350, FrameLayout.LayoutParams.WRAP_CONTENT); 
    searchView.setLayoutParams(lp); 

    searchView.setIconifiedByDefault(false); 
    searchView.setSubmitButtonEnabled(false); 

    return true; 
} 

public void startQuickSearchActivity(MenuItem menuItem){ 
    startActivity(new Intent(this, QuickSearchActivity_.class)); 
} 
3

मुझे लगता है कि ठीक करने के लिए के बजाय

mySearchView.setIconfied(false); 

का उपयोग कर setIconifiedByDefault()

पी एस द्वारा प्रबंधित मैं android.support.v7.widget का उपयोग कर रहा था। खोज दृश्य

+0

अब मुझे समझ में आया कि इस तरह के सामान के लिए HoloEverywhere का उपयोग करना आवश्यक नहीं है। समर्थन पैकेज अधिक कार्यात्मक हो रहा है। – gorodechnyj

+0

यह मेरे लिए काम नहीं कर रहा है। हमेशा यह बदसूरत खोज दृश्य आइकन दिखा रहा है ... :( – jcasadellaoller

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