2012-06-15 1 views
13

내 응용 프로그램의 빌드마다 다르게 브랜드화 된 로그인 화면이 있습니다. 이 화면의 레이아웃 파일에서 배경 이미지가 달라야하므로 최상위 컨테이너에 다른 스타일을 지정하고 싶습니다. 나는 이것을하는 방법에 손실에 조금이다.사용자 정의 테마에서 스타일을 참조하는 방법

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

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

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

안드로이드 테마 및 스타일을 사용한 훌륭한 예입니다. 애플리케이션 태그의 AndroidManifest에서 android : theme = "@ style/ThemeOne"또는 android : theme = "@ style/ThemeTwo"를 추가해야한다는 것을 언급해야합니다. 그게 우리가 테마에 대해 알아야 할 전부입니다 – Ragaisis

+0

대단히 감사합니다. 정확히 내가 무엇을 찾고 있었는지. – dentex