7

से विशेषता का समाधान नहीं कर सकता मैं कुछ शैली को DatePicker पर लागू करना चाहता हूं। platform's attrs.xml हम DatePicker Styleable के लिए निम्न विशेषताओं को देख सकते हैं:एंड्रॉइड नेमस्पेस

<declare-styleable name="DatePicker"> 
    ... 
    <!-- The text color for the selected date header text, ex. "2014" or 
     "Tue, Mar 18". This should be a color state list where the 
     activated state will be used when the year picker or day picker is 
     active.--> 
    <attr name="headerTextColor" format="color" /> 

    <!-- The background for the selected date header. --> 
    <attr name="headerBackground" /> 
    ... 
</declare-styleable> 

मैं android:headerBackground का उल्लेख कर सकते हैं, अप्रत्याशित रूप से मैं ऐसा नहीं कर सकते android:headerTextColor विशेषता के लिए। तो styles.xml में कोड निम्नलिखित:

<style name="MyDatePickerStyle" parent="@android:style/Widget.Material.DatePicker"> 
    <item name="android:headerBackground">@color/red</item> 
    <item name="android:headerTextColor">@color/red</item> 
</style> 

त्रुटि के साथ संकेत देता है, कि android:headerTextColor हल नहीं किया जा सकता है।

enter image description here

लेकिन मैं कर सकते हैं clearly seeWidget.Material.DatePicker उस विशेषता अधिभावी। दिलचस्प बात यह है कि कोड का हिस्सा Attributes for new-style DatePicker टिप्पणी से पहले है, जो किसी भी तरह से इस व्यवहार के कारण का कारण बन सकता है।

शायद इस व्यवहार का कारण और उस विशेषता को ओवरराइड करने का कारण क्या हो सकता है?

पर एंड्रॉयड स्टूडियो 2.3, minSdkVersion 23, buildToolsVersion 25.0.3, compileSdkVersion & targetSdkVersion 23 चल रहा है, कैश और साफ परियोजना अवैध ठहरा दिया।


आप R.attr docs में देख सकते हैं, वहाँ कुछ विशेषताओं के पीछे यह पाठ है:

यह लगातार एपीआई स्तर 23. उपयोग headerTextColor बजाय में पदावनत किया गया था।

जिसका अर्थ है कि यह विशेषता सार्वजनिक एपीआई के संपर्क में आनी चाहिए, लेकिन किसी भी तरह इसे छीन लिया जा रहा है और एएपीटी इसका उपयोग नहीं कर सकता है।

बग ट्रैकर पर an issue खोला गया।

+0

<आइटम नाम = एप्लिकेशन: headerBackground "> याद कर रहे हैं। @ रंग/लाल – Pavya

+0

अजीब मैं देख रहा हूँ कि एक ही व्यवहार' एंड्रॉयड:। HeaderMonthTextAppearance' चित्र महीने की उपस्थिति ओवरराइड करने के लिए काम करता है। दुर्भाग्यवश, 'एंड्रॉइड: हेडर YearTextAppearance' भी टूटा हुआ प्रतीत होता है, इसलिए यह लगभग आधा काम होगा। – Cheticamp

+0

@Cheticampamp, मैंने यह भी देखा कि एंड्रॉइड: हेडर YearTextAppearance' से संबंधित व्यवहार। मैंने जवाब देने पर इस मुद्दे पर ठोकर खाई सवाल] (https://stackoverflow.com/a/44088524/1083957)।किसी भी तरह, मैं वर्ष पाठ की उपस्थिति को बदलने के लिए सीम पा सकता हूं, लेकिन यह मेरे लिए रहस्य था कि यह विशेषता क्यों नहीं देखी गई थी। यह एक बग की तरह लगता है। – azizbekian

उत्तर

-1

कोशिश इस

Style.xml उपयोग करने के लिए

<style name="DatePicker"> 
     <item name="android:headerBackground">@color/colorPrimaryDark</item> 
     <item name="headerTextColor">@color/colorAccent</item> 
</style> 

मान attr.xml फ़ोल्डर

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <declare-styleable name="DatePicker"> 
     ... 
     <!-- The text color for the selected date header text, ex. "2014" or 
      "Tue, Mar 18". This should be a color state list where the 
      activated state will be used when the year picker or day picker is 
      active.--> 
     <attr name="headerTextColor" format="color" /> 
    </declare-styleable> 
</resources> 
+0

['कोई संसाधन नहीं मिला जो दिए गए नाम से मेल खाता है: attr' headerTextColor''] (https://i.gyazo.com/290d94c771d9fc11518ea575b3260b9a.png) – azizbekian

+0

यह काम नहीं करता है। – azizbekian

+0

क्षमा करें ** एंड्रॉइड: हेडरबैकग्राउंड ** रंग जिसे हम सेट कर सकते हैं और इसमें इसके विपरीत रंग लगेगा और ** हेडर टेक्स्टक्लोर ** पर सेट किया जाएगा जो निजी एटीआर है। धन्यवाद टिन ट्रैन –

2

style attribute "android:attr/headerTextColor" is private

AAPT का कहना है कि विशेषता निजी है। शायद वे एक @hideattrs.xml में

+0

क्या आप कृपया यह स्पष्ट कर सकते हैं कि आप इस त्रुटि संदेश को वास्तव में कैसे पुन: पेश कर सकते हैं? क्या आप एएपीटी 2 का उपयोग कर रहे हैं? दूसरा, मैं नहीं देख सकता कि यह विशेषता 'निजी' क्यों बनाई जानी चाहिए क्योंकि वे 'हेडरमोन्थटेक्स्टएपियरेंस', 'headerDayOfMonthTextAppearance' और' headerYearTextAppearance' को बहिष्कृत करने के बजाय बिल्कुल इस विशेषता का उपयोग करने का सुझाव देते हैं। [यहां] देखें (https://github.com/android/platform_frameworks_base/blob/master/core/res/res/values/attrs.xml#L4827)। – azizbekian

+0

मैं एएपीटी 2 का उपयोग करने के लिए एंड्रॉइड स्टूडियो 3.0 का उपयोग कर रहा हूं। एंड्रॉइड स्टूडियो 2.3 में एप 2 का उपयोग करने के लिए आप 'android.enableAapt2 = false' को 'gradle.properties' में भी जोड़ सकते हैं। हाँ, मुझे लगता है कि 'हेडर टेक्स्टक्लोर' निजी नहीं होना चाहिए, https://developer.android.com/reference/android/R.attr.html विशेषता को भी दस्तावेज नहीं कर रहा है। –

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