2015-04-06 14 views
20

मैं परिवर्तन नहीं करता है ऐसा करके प्रोग्राम के रूप में उपकरण पट्टी पृष्ठभूमि रंग बदलने के लिए कोशिश कर रहा है:टूलबार बदलें पृष्ठभूमि रंग प्रोग्राम के रूप में टूलबार शीर्षक पृष्ठभूमि रंग

getSupportActionBar().setBackgroundDrawable(newColorDrawable(getResources().getColor(R.color.test_color_blue))); 

और यह परिणाम है:

से पहले:

enter image description here

के बाद:

enter image description here

कुछ टूलबार शीर्षक अभी भी पहले जैसा ही पृष्ठभूमि रंग है। यहाँ

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:gravity="center_vertical" 
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
app:theme="@style/Theme.Toolbar"> 

और विषय है:

यहां मेरे उपकरण पट्टी एक्सएमएल है

<style name="Theme.Toolbar" parent="ThemeOverlay.AppCompat.Dark.ActionBar"> 
    <item name="android:maxHeight">@dimen/abc_action_bar_default_height_material</item> 
    <item name="android:background">@color/primary</item> 
    <item name="colorPrimary">@color/primary</item> 
    <item name="colorPrimaryDark">@color/primary_dark</item> 
    <item name="colorAccent">@android:color/white</item> 
    <item name="titleTextAppearance">@style/Theme.Toolbar.Title</item> 
</style> 
+0

क्या आपने शैलियों.एक्सएमएल में एक्शनबार के लिए कोई कस्टम शैली लागू की है, उनमें से कुछ विरोधाभासी हो सकते हैं। – Harry

+0

अपना लेआउट xml पोस्ट करें –

+0

@ डेविड जोन्स मैंने – EkKoZ

उत्तर

4

उपयोग इस TextView

public void changeToggleTitle() { 
    if (mToolbar != null) { 
     for(int i= 0; i < mToolbar.getChildCount(); i++){ 
      View v = mToolbar.getChildAt(i); 
      if(v != null && v instanceof TextView){ 
       TextView t = (TextView) v; 
       // Do the magic 
      } 
     } 
    } 
} 
तक पहुँचने के लिए
12
इस प्रकार

अपने कोड में परिवर्तित करें:

toolbar.xml

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
     style="@style/MyToolbarStyle" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_vertical"> 

विषय/स्टाइल

<style name="MyToolbarStyle"> 
    <item name="android:maxHeight">@dimen/abc_action_bar_default_height_material</item> 
    <item name="android:background">@color/primary</item> 
    <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item> 
    <item name="titleTextAppearance">@style/Theme.Toolbar.Title</item> 
    <!-- No need for colorPrimary, colorPrimaryDark, colorAccent here 
     this should go to the AppTheme --> 
</style> 

परिणाम

रों पहले

picture before background color change

और बाद: नई पृष्ठभूमि रंग etting

picture after background color change

+0

पर नए विवरण पोस्ट किए हैं, आपने रंगप्रीरी/प्राइमरीडार्क आदि कहां रखा था, जहां आप अपना 'ऐपथीम' कहां रखते हैं? साथ ही, क्या कोई विशेष कारण है कि आप मूल विषय स्थापित नहीं कर रहे हैं? – ThePersonWithoutC

+1

यह मूल रूप से केवल एक कस्टम शैली है और मैं किसी अन्य विषय से किसी भी विशेषता का उत्तराधिकारी नहीं बनना चाहता हूं, इस प्रकार मैं अभिभावक विषय निर्दिष्ट नहीं कर रहा हूं। 'ColorPrimary' के बारे में: यह ऐपथीम में सेट है जिसका उपयोग एप्लिकेशन/गतिविधियों द्वारा किया जाता है। डिफ़ॉल्ट रूप से 'टूलबार' 'रंगप्रवाह' विशेषता के आधार पर पृष्ठभूमि सेट करता है जब तक कि आप इसे शैली के साथ ओवरराइड न करें। – reVerse

4

देर है, लेकिन मुझे आशा है कि यह उपयोगी टिप्पणी

मैं अपने गतिविधि शैली

में इस item था होगा
<item name="android:background">someColor</item> 

इसलिए जब मैंने toolbar रंग बदल दिया, शीर्षक और मेनू आइटम पृष्ठभूमि नहीं बदला। मैंने अभी यह item हटा दिया है और अब यह सही काम करता है।

मेरे पास विवरण समझने का समय नहीं था, लेकिन मुझे लगता है कि यह किसी और के लिए उपयोगी हो सकता है।

0
mToolbar.setBackgroundResource(mGameEnum.getPrimeColorRes()); 
संबंधित मुद्दे