2012-11-04 24 views
34

प्रश्न: मुझे डिफ़ॉल्ट शैलियों xml रंगों के हेक्साडेसिमल कोड के साथ कहां मिल सकता है?एंड्रॉइड - डिफ़ॉल्ट बटन शैली

मैं शैली 'buttonStyle' और अन्य डिफ़ॉल्ट शैलियों डायन की तलाश में हूँ TextViews तरह पहलुओं को प्रभावित, बटन आदि

मैं <instalation_folder>\android-sdk\platforms\android-<versio>\data\res\values और <instalation_folder>\android-sdk\platforms\android-<version>\data\res\colors में देखा (आप पहलू की शैली को बदल न हो), लेकिन मैं नहीं था ' वास्तव में वह नहीं मिला जो मैं खोज रहा था।

आशा है कि मेरा प्रश्न स्पष्ट है।


कम प्रतिष्ठा के कारण मैं अभी तक इस प्रश्न का उत्तर नहीं दे सकता। यहाँ का जवाब

उत्तर

मैंने पाया googling के एक बिट के साथ किया जाता है वास्तव में 'Widget.Button' है 'buttonStyle' - Styling Android With Defaults

यह है कि यह कैसे काम करता है:

  • जैसा कि मैंने कहा था 'बटन स्टाइल' शैली 'विजेट.बटन' शैली \android-sdk\platforms\android-<version>\data\res\values\styles.xml में परिभाषित है। पृष्ठभूमि को सेट किया गया है: @android:drawable/btn_default
  • \android-sdk\platforms\android-<version>\data\res\drawable\btn_default.xml चयनकर्ता के रूप में बटन के पृष्ठभूमि रंग को परिभाषित करता है। रंग वास्तव में बटन के राज्य पर निर्भर करता है। डिफ़ॉल्ट रंग मैंने पाया खोज का एक सा के साथ @drawable/btn_default_normal
  • के लिए सेट है, कि btn_default_normal \android-sdk\platforms\android-<version>\data\res\drawable-mdpi

में स्थित छवि png है मैं इसे थोड़ा संशय है, लेकिन मुझे आशा है कि यह किसी को मदद मिलेगी, हो सकता है ...

उत्तर

113

समझना कि एंड्रॉइड शैलियों कैसे काम करती है थोड़ा गन्दा हो सकती है।

मैं यह बताने की कोशिश करूंगा कि उदाहरण के आधार पर मूल कार्य प्रवाह कैसे होगा।

मान लीजिए कि आप जानना चाहते हैं कि बटन के लिए डिफ़ॉल्ट पृष्ठभूमि क्या है। यह या तो एक साधारण रंग (असंभव) या एक ड्रॉबल (कई प्रकार के ड्रॉबल्स हैं) हो सकता है।

एंड्रॉइड में थीम्स हैं। एक विषय मूल रूप से परिभाषित करता है कि कौन सी शैली किस विजेट पर लागू होती है। इसलिए, हमारा पहला चरण डिफ़ॉल्ट एंड्रॉइड थीम ढूंढना है।

आप android-sdk\platforms\android-15\data\res\values\themes.xml

के अंतर्गत देख इस विषय फ़ाइल में button लिए खोज करें।

<!-- Button styles --> 

<item name="buttonStyle">@android:style/Widget.Button</item> 

इसका मतलब है कि विषय बटन शैली Widget.Button लागू होता है:

आप कुछ इस तरह मिल जाएगा।

ठीक है, अब चलिए शैली Widget.Button ढूंढें।

सभी डिफ़ॉल्ट Android शैली फ़ाइल android-sdk\platforms\android-15\data\res\values\styles.xml

में परिभाषित कर रहे हैं अब के लिए Widget.Button

खोज आप कुछ इस तरह मिल जाएगा:

<style name="Widget.Button"> 
    <item name="android:background">@android:drawable/btn_default</item> 
    <item name="android:focusable">true</item> 
    <item name="android:clickable">true</item> 
    <item name="android:textAppearance">?android:attr/textAppearanceSmallInverse</item> 
    <item name="android:textColor">@android:color/primary_text_light</item> 
    <item name="android:gravity">center_vertical|center_horizontal</item> 
</style> 

दिलचस्प लाइन है:

<item name="android:background">@android:drawable/btn_default</item>

इसका मतलब है कि btn_default नामक एक खींचने योग्य बटन बटन के रूप में सेट किया गया है।

अब हमें android-sdk\platforms\android-15\data\res के तहत ड्रॉइंग फ़ोल्डरों में से एक में btn_default.* नाम की एक फ़ाइल ढूंढनी होगी।

यह या तो एक छवि (बहुत ही असंभव) या btn_default.xml जैसी xml फ़ाइल हो सकती है।

एक छोटा सा के बाद आप फ़ाइल android-sdk\platforms\android-15\data\res\drawable\btn_default.xml

वह कुछ इस तरह होता है मिलेगा खोज:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_window_focused="false" android:state_enabled="true" android:drawable="@drawable/btn_default_normal" /> 
    <item android:state_window_focused="false" android:state_enabled="false" android:drawable="@drawable/btn_default_normal_disable" /> 
    <item android:state_pressed="true" android:drawable="@drawable/btn_default_pressed" /> 
    <item android:state_focused="true" android:state_enabled="true" android:drawable="@drawable/btn_default_selected" /> 
    <item android:state_enabled="true" android:drawable="@drawable/btn_default_normal" /> 
    <item android:state_focused="true" android:drawable="@drawable/btn_default_normal_disable_focused" /> 
    <item android:drawable="@drawable/btn_default_normal_disable" /> 
</selector> 

अब आप को समझने के लिए कि यह एक चयनकर्ता drawable (कई drawable प्रकारों में से एक है)। यह चयनकर्ता बटन स्थिति के आधार पर अलग-अलग पृष्ठभूमि चुनता है। उदाहरण के लिए, यदि बटन दबाया जाता है, तो इसकी एक अलग पृष्ठभूमि होती है।

कोई भी डिफ़ॉल्ट स्थिति को देखने दें।

<item android:state_enabled="true" android:drawable="@drawable/btn_default_normal" />

यह एक drawable btn_default_normal बुलाया लागू होता है।

अब हमें यह आकर्षित करने की आवश्यकता है।

फिर से, हमें android-sdk\platforms\android-15\data\res के तहत ड्रॉइंग फ़ोल्डरों में से एक में btn_default_normal.* नाम की एक फ़ाइल ढूंढनी होगी।

यह फिर से एक छवि या एक xml फ़ाइल हो सकता है जैसे btn_default_normal.xml

आपको विभिन्न संकल्पों के लिए विभिन्न ड्रॉइंग फ़ोल्डर्स में 'btn_default_normal.9.png' नामक कई फाइलें मिलेंगी।

:) अब आप जानते हैं कि btn_default_normal.9.png बटन पृष्ठभूमि के रूप में सेट है।

+1

धन्यवाद !! बहुत अच्छी तरह से समझाया। – Zombie

+6

वाह, यह एक अच्छा जवाब था :) – theapache64

6

जब आप XML में घोषित आप android विजेट का डिफ़ॉल्ट शैलियों पा सकते हैं:

<style name="Widget.Button"> 
     <item name="android:background">@android:drawable/btn_default</item> 
     <item name="android:focusable">true</item> 
     <item name="android:clickable">true</item> 
     <item name="android:textAppearance">?android:attr/textAppearanceSmallInverse</item> 
     <item name="android:textColor">@android:color/primary_text_light</item> 
     <item name="android:gravity">center_vertical|center_horizontal</item> 
    </style> 

डिफ़ॉल्ट बटन की पृष्ठभूमि:

style="@android:style/Widget.Button" - standard Button 
style="@android:style/Widget.TextView" - standard TextView 

उदाहरण के लिए इस डिफ़ॉल्ट बटन की शैली है

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/btn_default_normal" android:state_enabled="true" android:state_window_focused="false"/> 
    <item android:drawable="@drawable/btn_default_normal_disable" android:state_enabled="false" android:state_window_focused="false"/> 
    <item android:drawable="@drawable/btn_default_pressed" android:state_pressed="true"/> 
    <item android:drawable="@drawable/btn_default_selected" android:state_enabled="true" android:state_focused="true"/> 
    <item android:drawable="@drawable/btn_default_normal" android:state_enabled="true"/> 
    <item android:drawable="@drawable/btn_default_normal_disable_focused" android:state_focused="true"/> 
    <item android:drawable="@drawable/btn_default_normal_disable"/> 
</selector> 

आप एक की मदद से डिफ़ॉल्ट रंग प्राप्त कर सकते हैं y ग्राफिक्स संपादक: पथ डिफ़ॉल्ट बटन NinePatch .. \ Android-SDK \ प्लेटफार्मों \ android-13 \ डेटा \ रेस \ drawable-hdpi

+1

Appcompat lib के लिए यह कैसे करें? एंड्रॉइड: विजेट। बटन @ शैली/विजेट। AppCompat.Button और न ही काम कर रहा !! –