3

In einem Android-Projekt, das aus einem Bibliotheksprojekt besteht, muss ich ein anderes Thema in Manifest für Haupt-App und Bibliothek festgelegt haben. Wie ich brauche unten Thema in dem Hauptprojekt für BibliotheksprojektSet verschiedene Thema für Bibliotheksprojekt in Android

<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> 

und einem

<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> 

Bibliotheksprojekt Arten von Haupt-App Stilen unten gesetzt werden außer Kraft gesetzt. Wenn ich verschiedene Namen für Stile gebe, wird ein manifester Merger-Konflikt-Fehler ausgegeben.

unten ist das Manifest der wichtigsten app

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

und dies ist für Bibliothek

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

in Ihrer Bibliothek haben Sie etwas Aktivität? –

+0

Bibliotheksprojekt wird sein eigenes Manifest haben. Wende sie dort an. – Wizard

+0

ja Ich habe einige Aktivitäten in Bibliothek Projekt, wo die Themen angewendet werden sollten – arjun

Antwort

3

Nach Ihrer App bauen, gradle Ihre Manifest-Dateien zu einer Einheit verschmelzen, so Thema application Einstellung Das Tag in der Bibliothek wird durch die Attribute der App überschrieben.

zu einem anderen Namen Stil Namen ändern,

<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> 

Wenn Sie eine gewisse Aktivität in Ihrer Bibliothek Funktionen beginnen, stellen Sie dann das Thema zu Aktivitäten einzeln in der Bibliothek manifestieren file.Theme auf application Tag gesetzt auf Bibliothek manifest wird auf merge nach Projekt Build ersetzt werden, so eingestellt Thema für einzelne Aktivität

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

oder Sie setTheme in Ihrem Aktivitätscode verwenden können.

setTheme(R.style.MyLibTheme); 

auf Build-Prozess, wenn der Benutzer (Bibliotheksbenutzer) wird Ihre gleiches Thema Namen wird es mit dem Haupt app Modul Thema ersetzt werden, um diese Situation zu schützen Sie gradle Option in Ihrer Bibliothek gradle Datei verwenden.

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

Ich habe dies versucht, aber es funktioniert nicht, wenn ich dies auf Aktivität in Bibliothek Projekt – arjun

+0

@arjun 'setTheme' nicht funktioniert ?? –

+0

müssen Sie Thema für die spezifische Aktivität, nicht in Ihrem 'Anwendung' Thema setzen Sie in Ihrer Bibliothek Android Manifest, es wird nicht funktionieren, wie ich zuvor –

Verwandte Themen