2011-02-09 19 views
17

मेरे पास एक विषय है जो गतिविधियों पर लागू होने से इनकार करता है - शैलियों में से कोई भी लागू नहीं होता है। अगर मैं layout_width/layout_height<Button> के लिए विशेषताओं की आपूर्ति नहीं करता हूं तो यह रनटाइम त्रुटि भी प्राप्त करता है, यह दर्शाता है कि Button कक्षा लागू नहीं की जा रही है।एंड्रॉइड थीम सेट नहीं किया जा रहा है

/res/values/themes.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="Theme" parent="android:style/Theme.Black"> 
     <item name="android:windowNoTitle">true</item> 
     <item name="android:buttonStyle">@style/Button</item> 
     <item name="android:windowBackground">@color/page_background_light</item> 
     <item name="android:textAppearance">@style/TextAppearance</item> 
    </style> 
</resources> 

/res/values/styles.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="TextAppearance" parent="@android:style/TextAppearance"> 
     <item name="android:textSize">12sp</item> 
     <item name="android:textColor">@color/darkblue</item> 
    </style> 
    <style name="Button" parent="@android:style/Widget.Button"> 
     <item name="android:layout_width">fill_parent</item> 
     <item name="android:layout_height">wrap_content</item> 
     <!--<item name="android:textColor">#3C2F4F</item> 
     <item name="android:textSize">20dip</item>--> 
    </style> 
</resources> 

और प्रासंगिक प्रकट की स्थापना:

<application android:icon="@drawable/icon" 
    android:label="@string/app_name" 
    android:theme="@style/Theme"> 

मुझे क्या गलती है?

+0

मैं अभी ठीक उसी समस्या से निपट रहा हूं। क्या आप वाकई थीम को अलग फाइल में रख सकते हैं?मैंने थीम को थीम (एप्लिकेशन के बजाए) सेट करने की कोशिश की और मैंने इसे प्रोग्रामेटिक रूप से ऑनस्टार्ट पर लागू करने की भी कोशिश की - कोई भाग्य नहीं ... – katit

+0

हम्म। मुझे लगता है कि हमें बड़ी समस्या है। मैंने अभिभावक = "एंड्रॉइड: थीम.लाइट नं। टिटलेबार। फुलस्क्रीन" से उत्तराधिकारी की कोशिश की और मुझे अपनी गतिविधि पूर्ण स्क्रीन मिली। लेकिन मेरे बटन और ListView शैलियों को अभी भी लागू नहीं किया गया है .. तो, यह विषय "लागू" जैसा लगता है लेकिन – katit

उत्तर

0

जिज्ञासा से बाहर। FooBar जैसे किसी अन्य चीज़ पर अपनी थीम का नाम बदलने का प्रयास करें।

यहां स्पष्ट स्थिति पर जाकर, लेकिन सुनिश्चित करें कि आपका बटन सही शैली का उपयोग कर रहा है।

3

मुझे प्रत्येक <activity> के लिए थीम को स्पष्ट रूप से परिभाषित करना पड़ा।

0

संपादित करें: मुझे यकीन नहीं है कि यह सिर्फ प्रश्न में एक टाइपो था, लेकिन आपके मुख्य विषय में आप एंड्रॉइड की थीम का संदर्भ देते हैं। ब्लैक स्टाइल गलत तरीके से। आपका कोड का कहना है:

<style name="Theme" parent="android:style/Theme.Black"> 

जब यह कहना चाहिए:

<style name="Theme" parent="@android:style/Theme.Black"> 

मैं एक प्रकार का वृक्ष की तरह महसूस या संकलक आवेदन चलाने से पहले उसके लिए आपको पर भौंकने होगा, लेकिन हो सकता है में मदद मिलेगी।

+1

के अंदर सभी आइटम नहीं जब तक आपकी एक्सएमएल फ़ाइल मूल्य फ़ोल्डर में है, तब तक सबकुछ ठीक होना चाहिए, और फ़ाइल का नाम होना चाहिए कोई फर्क नहीं पड़ता। –

+0

आधिकारिक दस्तावेज़ीकरण को देखने के बाद, आप सही हैं। हालांकि, मैं एक और संभावित त्रुटि जासूसी करता हूं। अभी अपडेट हो रहा है – dennisdrew

2

According to this answer, ऐसा लगता है कि शैलियों के माध्यम से layout_width और layout_height प्रदान करना संभव नहीं है। हालांकि यह संकलित, अपवाद यह उठता है है:

E/AndroidRuntime(4117): java.lang.RuntimeException: Unable to start activity 
ComponentInfo{com.example/com.example.MainActivity}: 
java.lang.RuntimeException: Binary XML file line #79: You must supply a 
layout_width attribute. 

मुझे यकीन है कि क्यों है कि नहीं कर रहा हूँ, लेकिन एक समाधान हो सकता है। As this question suggests, आप चौड़ाई और ऊंचाई पैरामीटर के रूप में एक संदर्भ प्रदान करने में सक्षम हो सकता है।

फिर, मेरे अनुभव यह हैं कि एंड्रॉइड शैलियों के माध्यम से विजेट आयाम प्रदान करने का उचित समर्थन नहीं करता है।

20

मैं इसके साथ भी संघर्ष कर रहा हूं, और मुझे लगता है कि आखिरकार मुझे पता चला कि समस्या क्या हो सकती है - शायद यह वही है।

मेरे पास res\values फ़ोल्डर में परिभाषित कस्टम थीम थी, लेकिन values-v11 और values-v14 फ़ोल्डर में नहीं। जो मुझे लगता है कि इसे बनाया गया है ताकि कुछ उपकरणों में (विशेष रूप से 2 मैं परीक्षण कर रहा था!), विषय लागू नहीं किया जा सका क्योंकि यह अस्तित्व में नहीं था।

अब मैं अपने कस्टम थीम (आवेदन स्तर पर लागू) में निर्धारित गुणों को देख रहा हूं।

+0

धन्यवाद! मैं बस यह पता लगाने की कोशिश कर पागल हो गया कि मैं क्या गलत कर रहा था। – Richard

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