2012-06-15 15 views
13

Uygulamamın farklı yapıları için farklı bir şekilde markalanmış bir giriş ekranım var. Bu ekranın düzen dosyasında farklı olması için arka plan görüntüsüne ihtiyacım var, bu yüzden üst seviye kapsayıcı için farklı bir stile işaret etmek istiyorum. Bunu nasıl yapacağım konusunda bir kayıp yaşıyorum.Özel bir temada bir stile başvuru yapma

<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> 

Ve şu stilleri tanımlamış::

<resources> 

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

</resources> 

ben gibi, uygulama için birkaç farklı temalar vardır:

<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> 

ben gibi styleable şey ilan ettiler

Ve sonunda bir login.xml dosyası gibi bir şey:

<?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> 

Yanlış bir şey yapıyorum? Bu şekilde yapılabilir mi?

cevap

14

Tamam ben stil referans olmalıdır, bunu anladım: Ben paylaşmak istiyorum

style="?attr/loginPageContainerStyle" 

Figürlü.

+1

Android tema ve stilleri ile harika bir örnek. Sadece uygulama etiketinde AndroidManifest üzerinde android eklemeniz gerekir: theme = "@ style/ThemeOne" veya android: theme = "@ style/ThemeTwo" ve bu temalar hakkında bilmemiz gereken tek şey bu – Ragaisis

+0

Çok teşekkür ederim. Tam olarak aradığım şey. – dentex

İlgili konular