7

मेरे पास एक नीली पृष्ठभूमि वाली एक बटन शैली है जो एपीआई 22 में ठीक काम करती है, लेकिन एंड्रॉइड 4 में लागू शैली के बिना एक ही बटन गहरे भूरे रंग में दिखाई देता है। यह मेरी शैली है:एंड्रॉइड 5 में काम करने वाली बटन शैली लेकिन एंड्रॉइड 4

<style name="MyApp.Plain" parent="Theme.AppCompat.NoActionBar"> 
     <item name="android:windowBackground">@drawable/background</item> 
     <item name="android:buttonStyle">@style/MyApp.Widget.Button</item> 
</style> 


    <style name="MyApp.Widget.Button" parent="@android:style/Widget.Button"> 
     <item name="android:background">@drawable/btn_blue</item> 
     <item name="android:focusable">true</item> 
     <item name="android:clickable">true</item> 
     <item name="android:textStyle">bold</item> 
     <item name="android:textSize">14sp</item> 
     <item name="android:textColor">#fff</item> 
     <item name="android:gravity">center_vertical|center_horizontal</item> 
    </style> 

मेरे btn_blue.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="@drawable/btn_disabled" android:state_enabled="false"/> 
    <item android:drawable="@drawable/btn_pressed" android:state_enabled="true" android:state_pressed="true"/> 
    <item android:drawable="@drawable/btn_normal_blue" android:state_enabled="true"/> 

</selector> 

और btn_normal_blue.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" > 

    <gradient 
     android:angle="90" 
     android:endColor="#368ac6" 
     android:startColor="#0e58a4" /> 

    <corners android:radius="20dp" /> 

</shape> 

क्या हो सकता है इस व्यवहार का कारण और मैं इसे कैसे ठीक कर सकता हूं?

संपादित करें: यह समर्थन v7: 22.2.0 के साथ काम नहीं करता है, लेकिन v7: 21.0.3 के साथ काम करता है। मैंने निर्भरता के अलावा कुछ भी नहीं बदला और AppCompatActivity को ActionBarActivity में बदल दिया।

संभवतः यह एक एंड्रॉइड बग है।

+2

drawable/btn_blue सामग्री –

+0

दिखाएं, यदि कोई मौका है आपके पास एपीआई संस्करणों के लिए अलग फ़ोल्डर्स हैं, और यह शैली केवल उनमें से एक में है? – AdamMc331

+0

@ mcAdam331: नहीं, मेरे पास केवल एक शैलियों की फ़ाइल है। – barq

उत्तर

9

android:buttonStyle के बजाय buttonStyle प्रयास करें, क्योंकि यह AppCompat विशेषता पूर्व लॉलीपॉप है, इसलिए यह एंड्रॉयड उपसर्ग के बिना होना चाहिए।

+1

इसे उत्तर के रूप में स्वीकार किया जाना चाहिए, मेरी समस्या तय! धन्यवाद। –

0

मैंने कुछ लेआउट देखा है जहां एंड्रॉइड उपसर्ग के साथ और बिना गुणों को दो बार लागू किया जाता है। क्या आप इसे आजमा सकते हैं:

<style name="MyApp.Widget.Button" parent="@android:style/Widget.Button"> 
     <item name="android:background">@drawable/btn_blue</item> 
     <item name="background">@drawable/btn_blue</item> 
     <item name="android:focusable">true</item> 
     <item name="android:clickable">true</item> 
     <item name="android:textStyle">bold</item> 
     <item name="android:textSize">14sp</item> 
     <item name="android:textColor">#fff</item> 
     <item name="android:gravity">center_vertical|center_horizontal</item> 
</style> 

मैं वर्तमान में यह पता लगाने की कोशिश कर रहा हूं कि मैंने इसे पहले देखा था, और यह क्यों काम किया। अगर यह किया तो मुझे बताएं।

+0

धन्यवाद, मैंने कोशिश की, लेकिन दुर्भाग्य से एपीआई 10 पर बटन के लिए भूरे रंग की पृष्ठभूमि। – barq

+0

@barq मुझे लगता है कि यह एक शॉट के लायक था। क्या आप bucn_blue सामग्री को पोस्ट कर सकते हैं जैसे लुकास ने पूछा? तब समस्या हो सकती है। – AdamMc331

+0

@barq मैंने पाया कि मैं क्या सोच रहा था, यह समर्थन लाइब्रेरी से संबंधित है: http://stackoverflow.com/questions/18726865/custom-style-action-bar-not-working-in-android-4 मैं जा रहा हूँ मेरे जवाब अब, अगर मैं इसे संपादित करने में सक्षम हूं और आपकी मदद करता हूं। – AdamMc331

0

कोशिश AppCompat उपयोग करने के लिए:

<style name="MyApp.Widget.Button" parent="Base.TextAppearance.AppCompat.Button"> 
    <item name="android:background">@drawable/btn_blue</item> 
     ... 
    </style> 
+0

के लिए कोड जोड़ा गया धन्यवाद, लेकिन यह दुर्भाग्यवश, या तो काम नहीं करता था। – barq

+0

क्या आपने शैली को बटन पर सेट किया था? –

+0

नहीं, यह ऐप के लिए सामान्य बटन शैली है इसलिए इसकी आवश्यकता नहीं होनी चाहिए। यह एंड्रॉइड 5 में ऐसा किए बिना काम करता है। – barq

0

@ Michał Kisiel उत्तर सही है "buttonStyleandroid:buttonStyle के बजाय कोशिश करें, क्योंकि यह ऐपकंपेट विशेषता प्री लॉलीपॉप है, इसलिए यह एंड्रॉइड उपसर्ग के बिना होना चाहिए।" buttonStyle और buttonStyle भी नमूना: मैं सिर्फ जोड़ने है कि अगर आप उदाहरण के लिए कोई दृश्य बनाते प्रोग्राम के आप एंड्रॉयड रखना चाहिए करना चाहते

<item name="android:buttonStyle">@style/OrangeButton</item> 
    <item name="buttonStyle">@style/OrangeButton</item> 
संबंधित मुद्दे