2013-08-29 2 views
21

전체 앱의 기본 테마를 설정했습니다. 다음과 같이이 styles.xml에 정의되어 :레이아웃에 다른 테마를 설정하는 방법

<style name="DarkTheme" parent="@android:style/Theme.Holo"> 
     <!-- Customization here --> 
    </style> 

이 응용 프로그램의 주요 테마로 빛 테마를 선언 매니페스트에서 :

<style name="DefaultTheme" parent="@android:style/Theme.Holo.Light"> 
     <!-- Customization here --> 
    </style> 

가 나는 또한 어두운 테마를 정의한

<application 
    ... 
    android:theme="@style/DefaultTheme" > 

이제 제대로 작동하지만 액티비티에서는 단일 레이아웃에 대해 다른 테마를 설정해야합니다. 이런 식으로 뭔가 :

<LinearLayout 
    style="@style/DarkTheme"> 
    ... 

내가이 잘 작동하도록 기대하고 적용 :

+--------------------------------------------------+ 
    |   Parent Linear layout (default theme)  | 
    |             | 
    | +------------------------------------+ +-------+ | 
    | |         | |  | | 
    | |  Left linear layout    | |  | | 
    | |  (default theme)    | |  | | 
    | |         | |  | | 
    | |         | |  | | 
    | |         | | ·<----------- Right Linear Layout 
    | |         | |  | |  (Need it in dark theme) 
    | |         | |  | | 
    | |         | |  | | 
    | +------------------------------------+ +-------+ | 
    +--------------------------------------------------+ 

레이아웃 XML 파일에서 나는 가장 오른쪽 아이의 LinearLayout의 테마를 설정하기 위해 노력하고있어 어두운 테마는 오른쪽 레이아웃으로 만 표시되며 하위 뷰는 작동하지 않습니다. 나는 내장 된 @android 스타일로 @style을 대체하려고 시도했다. 나는 이것을 레이아웃 편집기와 실제 장치/시뮬레이터에서 테스트했다.

단일 레이아웃에 맞춤형 테마 또는 스타일을 적용 할 수 있습니까?

+0

을 나는 당신이 그것을에 대한 답변을 찾을 수, 그것은 오래된 질문입니다했다 알아? –

답변

20

이 뷰에 android:theme 속성을 사용하여 당신이 원하는 테마로 설정하여 지금 가능하다. 자식 뷰는 부모의 테마를 상속받습니다. 지원 라이브러리와

+1

안드로이드 마시맬로 기준 –

12

AFAIK XML을 사용하여 레이아웃에 테마를 적용 할 수 없습니다.

그러나 프로그래밍 방식으로 레이아웃을 만들 때 ContextThemeWrapper()을 사용하여 테마를 적용 할 수 있습니다.

LinearLayout darkThemeLayout = new LinearLayout(new ContextThemeWrapper(context, R.style.DarkTheme)); 
5

당신이 할 수 있습니다

app:theme="R.style.MyTheme" 
관련 문제