2012-08-08 13 views
5

Google+ ऐप में, ActionBarSpinner के दाएं कोने तीर की स्थिति वर्तमान स्ट्रिंग दिखाए जाने की लंबाई तक अनुकूल है। उदाहरण के लिए, स्पिनर की लंबाई कम दिखाई देती है जब परिवार बनाम चुना जाता है जब परिचित चुना जाता है।प्रदर्शित शीर्षक की लंबाई के आधार पर एक्शनबार स्पिनर के दाएं कोने तीर को गतिशील रूप से स्थिति

शीर्षक की लंबाई के आधार पर गतिशील रूप से स्थिति के लिए दाएं कोने तीर प्राप्त करने के लिए मुझे क्या करना है? मेरा अनुमान है कि एक विशेषता है जिसे मैं शैलियों.xml में सेट कर सकता हूं जो मेरे लिए ऐसा करेगा।

<style name="MyStyle" parent="android:style/Theme.Holo"> 
    <item name="android:actionDropDownStyle">@style/MyDropDownNav</item> 
</style> 

<style name="MyDropDownNav" parent="android:style/Widget.Holo.Spinner"> 
    <item name="android:AttributeHere">AttributeValue</item> 
</style> 

यहाँ कोड मैं अपने MainActivity.java में है::

यहाँ मेरी styles.xml है

ActionBar actionBar = getActionBar(); 
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 

// Specify a SpinnerAdapter to populate the dropdown list. 
SpinnerAdapter dataAdapter = new ArrayAdapter<String>(
     actionBar.getThemedContext(), 
     android.R.layout.simple_list_item_1, android.R.id.text1, 
     new String[] { "AAAAAAAAAAAAAAA", "BB" }); 

// Set up the dropdown list navigation in the action bar. 
actionBar.setListNavigationCallbacks(dataAdapter, this); 

गूगल + के विपरीत, मेरी दाहिने कोने तीर की स्थिति हमेशा तय हो गई है। तो अगर मैं ड्रॉपडाउन से "एएएएएएएएएएएएएएएएएए" से "बीबी" में चुनता हूं, तो तीर बिल्कुल नहीं चलता है।

+0

क्या आपने रास्ता तय किया है? लगभग 4 साल बीत चुके हैं .. – Bruce

उत्तर

0

कृपया अपने अनुकूलक में एंड्रॉयड शुद्ध Calendar के कोड देखें,, getView() हमेशा Calendar में वर्तमान आइटम रिटर्न ताकि Spinner की चौड़ाई वर्तमान आइटम के बराबर है। दरअसल, ActionBar में चौड़ाई हमेशा इसकी सबसे लंबी वस्तु की लंबाई के रूप में गणना की जाती है। Calendar यहां कुछ विशेष प्रक्रिया है।