2013-08-08 13 views
5

के साथ रंग मैं अपने सभी शैलियों को अपने ऐप के लिए थीम में डालने की कोशिश कर रहा हूं। हालांकि, मुझे टेक्स्टव्यू पर टेक्स्ट रंग बदलने में परेशानी हो रही है। यह मेरे attrs.xml फ़ाइल से है।एंड्रॉइड टेक्स्ट व्यू टेक्स्ट बदलें रंग

<?xml version="1.0" encoding="utf-8"?> 

<declare-styleable name="flat"> 
    <attr name="detail_name_view" format="reference" /> 

</declare-styleable> 

यह मेरा styles.xml से है फ़ाइल

<style name="flat_theme" parent="android:Theme.NoTitleBar"> 
    <item name="detail_name_view">@style/flat_detail_name</item> 
</style> 
<style name="flat_detail_name" parent="@android:style/Widget.TextView"> 
    <item name="android:textAppearance">?android:attr/textAppearanceMedium</item> 
    <item name="android:textColor">@color/detail_group_black</item> 
    <item name="android:textSize">16sp</item> 
    <item name="android:singleLine">true</item> 
    <item name="android:ellipsize">end</item> 
</style> 

और ये मेरे layout.xml फ़ाइल से है

<TextView 
     android:id="@+id/detail_name" 
     style="?detail_name_view" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:layout_gravity="left|center_vertical" 
     android:layout_marginLeft="5dp" 
     android:layout_weight="1" 
     android:gravity="left|center_vertical" /> 

मेरे पास निम्नलिखित के साथ मेनिफेस्ट सेट भी सही है।

<application 
    android:name="com.example.blah" 
    android:icon="@drawable/blah" 
    android:label="@string/app_name" 
    android:theme="@style/flat_theme" 

रंग कभी भी "@ रंग/detail_group_black" में नहीं बदला जाता है। क्या मुझे कुछ आसान याद आ रही है? या यह समस्या है कि एंड्रॉइड पहले से ही टेक्स्ट व्यू के लिए टेक्स्ट रंग गुण बना रहा है और इसीलिए शैली इसे ओवरराइड नहीं कर रही है? मेरी विशेषता-थीम रणनीति शेष ऐप के लिए अच्छी तरह से काम कर रही है लेकिन यह नहीं। कोई विचार? अग्रिम में धन्यवाद।

इसके अलावा, अगर इसकी सहायता की जा सकती है तो मैं इस बदलाव के लिए कस्टम टेक्स्ट व्यू क्लास नहीं बनाऊंगा: यह एक काफी बड़ी परियोजना है और मुझे यकीन नहीं है कि अगर मैं टेक्स्टव्यू का विस्तार करता हूं तो मैं किस प्रकार की समस्याएं चला सकता हूं सब कुछ।

संपादित इसके अलावा, अगर मैं TextView बदल शैली = "@ शैली/flat_detail_name_view" के लिए, यह ठीक काम करता है। कारण मैं ऐसा नहीं करना चाहता हूं ताकि मैं थीम को बदलकर इन पाठ्यपुस्तकों की उपस्थिति को बदल सकूं। शैली का उपयोग करना = "? Something_else" मेरे सभी अन्य विचारों पर काम करता है, इसलिए मैं वास्तव में इसे समझ नहीं पा रहा हूं और शायद मुझे कुछ आसान याद आ रही है?

+0

टेक्स्टव्यू शैली में "? Detail_name_view" क्या है? –

+0

शैली = "? विस्तार_नाम_दृश्य" विस्तार_नाम_दृश्य विशेषता का संदर्भ है। –

उत्तर

2

मुझे कोई समस्या होने पर, मेरी समस्या मिली, मुझे मेरी समस्या मिली! असल में कारण यह काम नहीं कर रहा था क्योंकि मैं निम्नलिखित कोड के साथ दृश्य को फुला रहा था।

private View buildGroupView(ExpandListGroup group) { 
    LayoutInflater inf = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE); 
    View view; 
    switch(group.getType()){ 
     case ExpandListGroup.HEADER : 
      view = inf.inflate(R.layout.three_col_header, null); 
      break; 
     default: 
      view = inf.inflate(R.layout.detail_expandablelist_group_item, null); 
      break; 

    } 

    return view; 
} 

और मेरे एडाप्टर के GetGroupView में मैं इसे वापस कर रहा था। Theme/Style is not applied when inflater used with ApplicationContext:

public View getGroupView(int groupPosition, boolean isLastChild, View convertView, 
     ViewGroup parent) { 
    View view = convertView; 
    ExpandListGroup group = (ExpandListGroup) getGroup(groupPosition); 

    view = buildGroupView(group); 

    setGroupViewData(group, view); 

    return view; 
} 

जाहिर है मेरी समस्या यह है कि मैं LayoutInflater

inf = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE); 

को बदलने के लिए साथ ..

LayoutInflater inf = mActivity.getLayoutInflater(); 

इस पोस्ट के नीचे स्थित CommonsWare द्वारा सुझाव दिया गया है की जरूरत थी।

आपकी मदद के लिए धन्यवाद।

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