2010-07-22 3 views
4

내 앱에 다양한 시각적 상수가 정의 된 styles.xml 파일이 있습니다.전체 응용 프로그램을 런타임에 대체 "styles.xml"파일로 전환 하시겠습니까?

내 사용자가 전체 앱을 다른 시각적 테마로 전환 할 수 있기를 바랍니다. 대체 파일 styles2.xml을 제공하고 런타임에 (설정을 통해) 전환하고 싶습니다.

가능한가요? 생성 된 R 클래스에서 스타일 이름의 모양이 좋지 않다고 생각합니다.

불가능할 경우 내 다음 최고의 옵션은 무엇입니까?

+0

것이 가능하지만 난 너무 – Sephy

답변

1

아직 관심이있는 사람이 있는지는 확실치 않지만 가능한 해결책을 찾았습니다. 약간 hackish하지만 원하는 결과를 얻을. 는 기본적으로 나는 별도의 국가 코드 디렉토리에 내 2 개 스타일 파일을 설정 :

Configuration config = new Configuration(); 
config.mcc = 199; 
getBaseContext().getResources().updateConfiguration(config,null); 

가 난 단지 몇 가지 기본적인 일을했습니다

res/values-mcc199/style.xml 
res/values-mcc198/style.xml 

그런 다음 내 활동에 나는 참조되는 변경하려면 다음을 사용 지금까지 테스트했지만 작동하는 것으로 보입니다. 이미 국가 코드를 사용하여 레이아웃을 결정한 경우 분명히 방해가됩니다. 전화가 국가 변경에 관한 이벤트를 얻는다면 문제가있을 수 있다고 생각합니다.

1

사실, 문서를 읽은 후이를 수행 할 수있는 것으로 보입니다. Look here. 는 그것을 했나요됨에 :

는, 스타일의 집합을 만들 프로젝트의 고해상도/값/디렉토리에 XML 파일을 저장하려면. XML 파일 의 이름은 임의이지만 .xml 확장자를 사용해야하며 res/values ​​/ 폴더에 저장해야합니다.

이제 논리적이고 문서를 잘못 읽지 않았 으면 원하는만큼 스타일을 만들 수 있으며 themes.xml에서 @style/...을 사용하여 참조 할 수 있습니다 (원하는 경우 전체 활동 또는 응용 프로그램) 다음에 적용, 그냥 내가이 일을해야한다고 생각

(그림 참고 R.id.yourtheme)

를 호출합니다. 가자고 우리에게 말해?

+0

내가 한번 풀어주지 Sephy을 약속 보이는 대답에 관심이 있다면 나도 몰라. –

+0

이것은 활동 내용이로드되기 전에 만 작동한다고 생각합니다. 그 후에는 효과가없는 것처럼 보입니다. – skorulis

1

알아보기 마침내!

우리의 대답은 여기에 있습니다 : http://www.androidengineer.com/2010/06/using-themes-in-android-applications.html

R.

+0

내 앱에서 제공된 링크에서 발견 된 샘플을 테스트했습니다. 매력처럼 작동합니다. 문제는 활동을 끝내고 다시 만들어야한다는 것입니다. 스타일이 적용되지 않으면 스타일이 적용되지 않습니다. –

0

그것은 정확한 답이 아니다; 여기 내 블로그 게시물 :

http://blog.blundell-apps.com/switching-android-configurations-using-constants-and-ant/

나는 스위치 후 컴파일대로 XML 파일을 전환 중지 아무것도 없다, Ant를 사용하여 빌드시에 자바 클래스를 전환 할 수 있습니다. 자습서를 수정하려면 템플리트 파일의 경로를 변경해야합니다.또한 GitHub의에 미러링

: https://github.com/blundell/BuildChoiceTut

관련 문제