은 styles.xml에 정의하여 테마를 설정하고 나뿐만 아니라 개발 된 다른 응용 프로그램에서 테마를 얻기 위해 그android에서 다른 앱 리소스의 테마를 변경하는 방법은 무엇입니까? 내가 아는
setTheme(android.R.style.MyTheme);
처럼하지만, 내가 원하는 사용하는 방법이있다. 리소스 이름을 알고 있고 실제로이 코드 블록으로 테마 ID를 얻을 수 있습니다.
Resources res = getPackageManager().getResourcesForApplication("com.example.theme");
int resThemeId = res.getIdentifier("my_theme","style","com.example.theme");
디버그 할 때 resThemeId가 0이 아닙니다.
그런 다음이 테마를 설정하는 마지막 명령이 필요합니다. 나는 문 아래 작성하는 경우 super.onCreate() 함수 전에, 나는이 방법을 구현하려고하지만하지만 그 대신이의
setTheme(resThemeId);
를 작동하지 않는 것, 내가 잘 작동
setTheme(android.R.style.Theme_Holo_Light);
그래서 , 다른 패키지 리소스의 테마를 사용하려면 어떻게해야합니까?
다른 패키지에서 리소스 ID를 가져올 수 있지만 해당 리소스는 APK에 없습니다. 'PackageManager # getResourcesForApplication (String packageName) '을 사용하여 리소스를로드하는 것은 드로어 블, 문자열, 부울 등에서 작동해야합니다. 그러나 다른 APK의 테마를로드하는 것이 가능하고 권장 할만하다고 생각하지 않습니다. –
다른 패키지 리소스에서 드로어 블, 문자열, 부울을 얻을 수는 있지만 테마도 얻을 것으로 기대됩니다. 왜 불가능합니까? – Berkay92
그것은 가능합니다 (내 대답 참조). 테마를 적용 할 수 있도록 getResrouces를 재정 의하여 다른 응용 프로그램의 자원을 반환해야합니다. 이렇게하면 다른 응용 프로그램의 모든 문자열, 레이아웃, 드로어 블 및 기타 리소스가 반환되므로 권장하지 않습니다. –