2011-02-01 4 views
20

벌집으로 부드럽게 작동하도록 앱을 준비 중입니다. 나는 안드로이드 테마에 관한 작은 미학 질문을 가지고 있습니다.테마를 Android 버전에 따라 변경하십시오.

벌집의 경우 다음 주제가 사용되는 것이 좋습니다.

android:theme="@android:style/Theme.Holo.Light" 

이전 버전에서 내 테마를 사용할 때 내 응용 프로그램에서 다른 테마를 사용하게하려면 어떻게해야합니까? 사전에

감사

답변

32

편집 : 3.0 SDK의 출시 된 버전에 대한 업데이트되었습니다. 이 작업을 수행하는


한 가지 방법은 <uses-sdk android:targetSdkVersion="11">을 설정하는 것입니다. 당신은 또한 당신의 <application> 정의 위에 올려 놓아야한다. 이렇게하면 홀로그램 테마를 사용할 수있는 경우 시스템에서 사용하고 그렇지 않은 경우 기본 테마를 사용하도록 시스템에 지시합니다.

또 다른 방법은 API 레벨/OS 버전에 따라 다른 테마를 상속하는 테마, 예를 들어 MyTheme을 정의하는 것입니다. resource directory qualifiers을 사용하면됩니다.

디렉토리 구조는 다음과 같이 수 : res/values/styles.xml

res/ 
    values/ 
    styles.xml 
    values-v11/ 
    styles.xml 

내용은 같은 것입니다 :

<resources> 
    <style name="MyTheme" parent="@android:style/Theme.Light"> 
    ... 
    </style> 
</resources> 

그리고 res/values-v11/styles.xml의 내용이 될 것 같은 뭔가 :

<resources> 
    <style name="MyTheme" parent="@android:style/Theme.Holo.Light"> 
    ... 
    </style> 
</resources> 

futu에서 다시 말하지만 Holo 테마는 API 수준에서 항상 의미가있을 수는 없으므로 나중에이 방법을 조정해야 할 수도 있습니다. values-large-v11 등과 같은 다른 디렉토리 한정자를 사용할 수도 있습니다. 전적으로 당신에게 달려 있습니다.

+0

굉장, 고마워. 나는 당신이 "미래에 Holo 테마가 API 레벨에 의해 항상 의미있는 것은 아닐 수도 있음"을 의미하는지 궁금합니다. Holo 테마가 미래의 릴리스에서 달라 지거나 전혀 새로운 테마가 추가되었다고 말하는 것이 아닙니까? 따라서 개발자는 더 많은 테마를 수용해야 할 수도 있습니다. 이렇게하면 NoTitleBar에서 기본 테마 (Theme 또는 Theme.Holo)를 사용하는 등의 작업을 간단하게 수행하기가 어렵습니다. 어쨌든, 모든 설명 주셔서 감사합니다; 나는 ICS에 기대하고있다 –

+0

그것은 매우 근시안적 인 코멘트이었다 :-) 지금 그것을 치기. Holo는 물리적 크기에 관계없이 API 11+에 분명히 적합합니다. –

+0

@RomanNurik - 대상이 11 일 때 Holo Light을 인식하도록 자동 완성되지 않습니다. project.properties에서 android-11로 대상을 변경 한 후에 만 ​​프로젝트를 컴파일 할 수 있었고 자동 완료되었습니다 일했다. –

관련 문제