2012-04-26 27 views
23

मैं प्रासंगिक कार्रवाई बार (सीएबी) पर शैली जानकारी के लिए देख रहा हूँ। मैं तो बस .. वास्तव में पाठ का रंग बदलने की जरूरत हैप्रासंगिक Actionbar शैलियों

Result of contextual actionbar

आप ऊपर से देख सकते हैं, इस मानक Theme.Holo.Light.DarkActionBar विषय उपयोग कर रहा है, तो मैं बस पाठ रंग को सफेद पर सेट करने की आवश्यकता है!

क्या कोई मुझे सही दिशा में इंगित कर सकता है?

public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
    //mode.setTitle("Contextual Action Bar"); (replace this call) 
    TextView tv= (TextView)getLayoutInflater().inflate(R.layout.contextual_title, null); 
    tv.setText("Contextual Action Bar"); 
    mode.setCustomView(tv); 

जहां लेआउट/contextual_title.xml अपने इच्छित रंग/आकार/शैली के साथ एक एकल TextView शामिल आदि

में:

+1

ऐसा लगता है कि यह एक बग है: http://code.google.com/p/android/issues/detail?id=26008 –

उत्तर

4

मैं अपने खुद के सवाल पर एक टिप्पणी पोस्ट, और यह वास्तव में एंड्रॉयड के संस्करण में एक बग मैं उपयोग कर रहा था (शायद 4.0 के एक प्रारंभिक संस्करण)

इस बग वर्णित है: http://code.google.com/p/android/issues/detail?id=26008

51

एक प्रासंगिक क्रिया बार में रंग/आदि पाठ के बदलने के लिए वास्तव में, प्रासंगिक कार्रवाई बार में लगभग हर चीज स्टाइल की जा सकती है। केवल समस्या यह है कि शब्द 'प्रासंगिक' की खोज करने कहीं नहीं उपयोगी होता है। प्रासंगिक स्टाइल सुविधाओं को सभी "actionMode ..." कहा जाता है। यहाँ कुछ मैं इस्तेमाल किया (मेरे विषय में परिभाषित किया।) कर रहे हैं

<item name="android:actionModeCloseDrawable">@drawable/check</item> 
<item name="android:actionModeCutDrawable">@drawable/ic_menu_cut_holo_dark</item> 
<item name="android:actionModeCopyDrawable">@drawable/ic_menu_copy_holo_dark</item> 
<item name="android:actionModePasteDrawable">@drawable/ic_menu_paste_holo_dark</item> 
<item name="android:actionModeSelectAllDrawable">@drawable/ic_menu_selectall_holo_dark</item> 
<item name="android:actionModeBackground">@drawable/contextual</item> 
<item name="android:actionModeCloseButtonStyle">@style/MyCloseButton</item> 

<!-- these change the press backgrounds for the vanilla actionBar and for search --> 
<item name="android:windowContentOverlay">@null</item> 
<item name="android:selectableItemBackground">@drawable/bar_selector</item> 
<item name="android:actionBarItemBackground">@drawable/bar_selector</item>  

<!-- these were defined in platform/.../data/res/values/... but Eclipse didn't recognize them --> 
<!--? item name="android:actionModeShareDrawable">@drawable/icon</item --> 
<!--? item name="android:actionModeFindDrawable">@drawable/icon</item --> 
<!--? item name="android:actionModeWebSearchDrawable">@drawable/icon</item --> 
<!-- item name="android:actionModeBackground">@drawable/red</item --> 

<!-- and finally --> 
<style name="MyCloseButton" parent="android:style/Widget.ActionButton.CloseMode"> 
    <item name="android:background">@drawable/bar_selector</item> 
</style> 

आप आसानी से अपना स्वयं का पाठ संपादन काट/चिपका/कॉपी/selectall माउस, बार पृष्ठभूमि, और कहा कि रंग जब बदलता है आइकन पृष्ठभूमि सेट कर सकते हैं आप आइकन दबाएं (ऊपर bar_selector)। माउस ImageViews, नहीं बटन होते हैं, और संपादित आईडी (और pressable पृष्ठभूमि) imageView के माता-पिता (देखने के प्रति एक माता पिता) जो कि एक 'आंतरिक' प्रकार है से जुड़े होते हैं।

यह क्या चला जाता है जहां शैलियों में स्पष्ट कभी नहीं है - मैंने पाया जहां selectableItemBackground मंच Themes.xml में था, और की नकल की और संशोधित drawable में इशारा किया।

+1

एक चीज़ जो यहां शामिल नहीं है- बंद बटन के टेक्स्ट रंग को कैसे बदलें (शीर्षक नहीं)। मेरी उपकरणों के कई पर, यह अभी भी रूप में अंधेरे से पता चलता है, भले ही मैं नियमित रूप से होलो होने के लिए करीब मोड बटन की शैली निर्धारित किया है। मैंने करीबी मोड शैली में टेक्स्ट रंग सेट करने का भी प्रयास किया है। –

+0

यह जेफरी द्वारा बताए गए प्रश्न का उत्तर नहीं देता है। –

+0

क्या आप विवरण में और अधिक बता सकते हैं कि आप सीएबी की पृष्ठभूमि कैसे बदलते हैं, क्योंकि जब मैं अपनी एक्शनबार के लिए अपनी शैली में आइटम = "एंड्रॉइड: एक्शनमोडबैकग्राउंड" डालता हूं, तो मेरे लिए कुछ नहीं होता :( – Sandra

0

यदि आप मैन्युअल रूप से प्रासंगिक क्रिया मोड प्रारंभ कर रहे हैं, तो आप इसे लॉन्च करने से पहले एक नई थीम के साथ setTheme() को कॉल कर सकते हैं (शायद Theme.AppCompat.Light.DarkActionBar यदि आप ब्लैक-ऑन-ब्लैक टेक्स्ट समस्या से बचने का प्रयास कर रहे हैं)। यह वर्तमान गतिविधि के विषय को प्रभावित नहीं करेगा अगर आप पहले से गतिविधि की सामग्री देखने निर्धारित किया है।

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.my_activity_layout); 

    // these lines can occur anywhere so long as you've already 
    // called "setContentView()" on the activity. The theme 
    // you set here will apply to the action mode, but not to 
    // the activity. 
    setTheme(R.style.Theme_AppCompat_Light_DarkActionBar); 
    startSupportActionMode(myActionModeCallback); 

} 
0

यह अब काम करता है, लेकिन आप/styles.xml (नहीं मान-वी #/styles.xml) मूल्यों में दर्ज करें और (गैर एपीआई विशिष्ट टैग)

सामान्य रूप में यह भी दर्ज करने की
<!-- Application theme. --> 
<style name="AppTheme" parent="AppBaseTheme"> 
    <item name="android:actionModeCloseDrawable">@drawable/ic_launcher</item> 
    <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
</style>