2012-06-15 32 views
13

Tôi có màn hình đăng nhập được gắn thương hiệu khác nhau cho các bản dựng ứng dụng khác nhau của tôi. Tôi cần hình nền khác nhau trong tệp bố cục cho màn hình này, vì vậy tôi muốn trỏ đến một kiểu khác cho vùng chứa cấp cao nhất. Tôi hơi mất thời gian để làm điều này.Cách tham chiếu một kiểu trong chủ đề tùy chỉnh

Tôi đã tuyên bố một điều gì đó styleable như:

<resources> 

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

</resources> 

Tôi có chủ đề khác nhau cho ứng dụng, như vậy:

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

Và tôi đã xác định phong cách sau:

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

Và cuối cùng là tệp login.xml, chẳng hạn như:

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

Tôi có làm gì sai không? Điều này có thể được thực hiện theo cách này?

Trả lời

14

Ok I figured it out, tài liệu tham khảo phong cách nên là:

style="?attr/loginPageContainerStyle" 

đặn tôi sẽ chia sẻ.

+1

Ví dụ tuyệt vời với chủ đề và kiểu Android. Chỉ cần đề cập rằng trên AndroidManifest trên thẻ ứng dụng cần thêm android: theme = "@ style/ThemeOne" hoặc android: theme = "@ style/ThemeTwo" và đó là tất cả những gì chúng ta cần biết về chủ đề – Ragaisis

+0

Cảm ơn bạn rất nhiều. Chính xác những gì tôi đang tìm kiếm. – dentex

Các vấn đề liên quan