2012-06-15 15 views
13

मेरे पास एक लॉगिन स्क्रीन है जो मेरे आवेदन के विभिन्न निर्माण के लिए अलग-अलग ब्रांडेड है। मुझे इस स्क्रीन के लिए लेआउट फ़ाइल में अलग-अलग पृष्ठभूमि छवि की आवश्यकता है, इसलिए मैं शीर्ष स्तर के कंटेनर के लिए एक अलग शैली को इंगित करना चाहता हूं। मैं यह कैसे करना है इस पर एक नुकसान में थोड़ा सा हूँ।कस्टम थीम में शैली का संदर्भ कैसे लें

<resources> 

    <declare-styleable name="ThemeBase"> 
     <attr name="loginPageContainerStyle" format="reference" /> 
    </declare-styleable> 

</resources> 

मैं जैसे, आवेदन के लिए कई अलग अलग विषयों है:

<resources> 

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

    <style name="ThemeOne" parent="ThemeBase"> 
     <item name="loginPageContainerStyle">@style/loginPageContainerThemeOne</item> 
    </style> 

    <style name="ThemeTwo" parent="ThemeBase"> 
     <item name="loginPageContainerStyle">@style/loginPageContainerThemeTwo</item> 
    </style> 

</resources> 

और मैं निम्नलिखित शैलियों को परिभाषित किया है:

<resources> 
    <style name="loginPageContainerThemeOne"> 
     <item name="android:background">@drawable/background_theme_one</item> 
    </style> 

    <style name="loginPageContainerThemeTwo"> 
     <item name="android:background">@drawable/background_theme_two</item> 
    </style> 
</resources> 

मैं की तरह एक Styleable कुछ घोषणा की है

और अंत में एक login.xml फ़ाइल कुछ ऐसा है:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/loginRoot" 
    style= [ ? WHAT GOES HERE ? ] 
    android:gravity="center_horizontal" 
    android:orientation="horizontal"> 

    [ LAYOUT STUFF ... ] 

</LinearLayout> 

क्या मैं कुछ गलत कर रहा हूं? क्या यह इस तरह से किया जा सकता है?

उत्तर

14

ठीक है, मैं यह पता लगा, शैली संदर्भ होना चाहिए:

style="?attr/loginPageContainerStyle" 

लगा कि मैं हिस्सा होगा।

+1

एंड्रॉइड थीम और शैलियों के साथ शानदार उदाहरण। बस यह उल्लेख करने की आवश्यकता है कि एप्लिकेशन टैग पर एंड्रॉइडमैनीफेस्ट पर एंड्रॉइड जोड़ने की जरूरत है: थीम = "@ स्टाइल/थीमऑन" या एंड्रॉइड: थीम = "@ स्टाइल/थीमटवो" और हमें केवल – Ragaisis

+0

विषयों के बारे में जानने की ज़रूरत है। ठीक वही जो मेरे द्वारा खोजा जा रहा था। – dentex

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