3

라이브러리 프로젝트로 구성된 안드로이드 프로젝트에서 메인 애플리케이션 및 라이브러리의 매니페스트에 다른 테마 세트가 있어야합니다. 나는 주 프로젝트안드로이드의 라이브러리 프로젝트에 다른 테마 설정

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/grey</item> 
    <item name="colorPrimaryDark">@color/black</item> 
    <item name="colorAccent">@color/green</item> 
</style> 

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/blue</item> 
    <item name="colorPrimaryDark">@color/red</item> 
    <item name="colorAccent">@color/white</item> 
</style> 

도서관 프로젝트 스타일은 주요 애플 리케이션 스타일에 우선하여 적용됩니다 라이브러리 프로젝트 아래 하나의 주제 아래 설정할 필요가있다. 스타일에 다른 이름을 지정하면 매니페스트 병합 충돌 오류가 발생합니다. 다음은

주요 응용 프로그램

<application 
    android:name=".MyApp" 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 

의 매니페스트이며,이 하나 너무 application에 테마를 설정 앱, Gradle을 하나로 매니페스트 파일을 병합 할을 구축 한 후 라이브러리

<application 
    android:allowBackup="true" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme" 
    > 
+0

귀하의 라이브러리에 어떤 활동이 있습니까? –

+0

라이브러리 프로젝트에는 자체 매니페스트가 있습니다. 거기에 라이브러리를 적용하십시오. – Wizard

+0

예 테마가 적용되어야하는 라이브러리 프로젝트에서 몇 가지 활동이 있습니다. – arjun

답변

3

입니다 태그는 앱의 속성에 의해 무시됩니다. 당신이 당신의 라이브러리 함수에서 어떤 활동을 시작하는 경우

<style name="MyLibTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/blue</item> 
    <item name="colorPrimaryDark">@color/red</item> 
    <item name="colorAccent">@color/white</item> 
</style> 

, 다른 이름으로 스타일 이름을 변경

, 개별적에 application 태그 설정 라이브러리 매니페스트 file.Theme에서 활동 테마를 설정하여 라이브러리 매니페스트 개별 활동

<activity android:name=".MyLibActivity" android:theme="@style/MyLibTheme"> 
    </activity> 

를 들어, 프로젝트 빌드 후 병합에 그렇게 설정 테마를 대체됩니다 또는 당신은 당신의 활동 코드에서 setTheme를 사용할 수 있습니다. 빌드 프로세스에

setTheme(R.style.MyLibTheme); 

사용자 (라이브러리 사용자가) 당신 같은 주제 이름을 사용하는 것은 당신이 라이브러리의 Gradle을 파일에 Gradle을 옵션을 사용할 수있는 상황을 보호하기 위해, 주요 app 모듈을 테마로 대체됩니다 경우.

android{ 
    // replace mylib_ with name related to your library 
    resourcePrefix 'mylib_' 
} 
+0

이 작업을 시도했지만 라이브러리 프로젝트에서이 작업을 수행 할 때 작동하지 않습니다. – arjun

+0

@arjun'setTheme'이 작동하지 않습니다 ?? –

+0

라이브러리의 Android 매니페스트에서 설정 한 'application'테마가 아닌 특정 활동에 대한 테마를 설정해야합니다. 이전에 말한대로 작동하지 않습니다. –