Ich möchte dem Benutzer die Möglichkeit geben, welche Farbe Haut die App haben wird. Zum Beispiel, ich würde eine schwarze Haut mit schwarzen Farben mit verschiedenen Tonalitäten und auch eine weiße Haut mit weißen Tonalitäten implementieren.Wie Sie dem Benutzer die Möglichkeit geben zwischen verschiedenen Farben Haut in Ihrer App zu wechseln
Welches ist der beste Ansatz, um dies zu erreichen?
Zum Beispiel weiß ich, dass es eine Datei "colors.xml" in Android gibt, die die Farben Ihrer App enthalten sollte. Wäre eine Möglichkeit, zwei Farben Dateien oder etwas zu haben und die eine oder andere abhängig von der Benutzerauswahl zu verwenden? Vielleicht eine styles.xml Datei?
Bitte sagen Sie mir Ihre Meinung zu dem whould der beste Ansatz sein, diese
Danke
mein Layout zu erreichen:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- The main content view -->
<RelativeLayout
android:id="@+id/main_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.PagerTitleStrip
android:id="@+id/pager_title_strip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:paddingTop="4dp"
android:paddingBottom="4dp"
style="@style/CustomPagerTitleStrip"/>
</android.support.v4.view.ViewPager>
</RelativeLayout>
<!-- The navigation drawer -->
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/drawer_header"
app:menu="@menu/drawer_menu"
style="@style/NavigationDrawerStyle"/>
</android.support.v4.widget.DrawerLayout>
Meine styles.xml Datei:
<resources>
<style name="AppTheme" parent="Theme.AppCompat">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="actionBarTheme">@style/CustomActionBar</item>
<item name="android:textColor">@color/colorFontMenus</item>
<item name="itemTextColor">@color/colorFontMenus</item>
<item name="itemIconTint">@color/colorFontMenus</item>
</style>
<style name="CustomActionBar">
<!-- title text color -->
<item name="android:textColorPrimary">@color/colorFontMenus</item>
<!-- subtitle text color -->
<item name="android:textColorSecondary">?android:textColorPrimary</item>
<!-- action menu item text color -->
<item name="actionMenuTextColor">?android:textColorPrimary</item>
<!-- action menu item icon color - only applies to appcompat-v7 icons :(-->
<item name="colorControlNormal">?android:textColorPrimary</item>
</style>
<style name="CustomPagerTitleStrip">
<item name="android:background">@color/mainColorWithAlpha</item>
</style>
<style name="CustomTextView">
<item name="android:textColor">@color/colorFontContent</item>
</style>
<style name="CustomScrollBar">
<item name="android:scrollbarThumbVertical">@drawable/scrollbar_green</item>
</style>
<style name="CustomDrawerHeader">
<item name="android:background">@drawable/drawer_header_background_green</item>
</style>
<style name="NavigationDrawerStyle">
<item name="android:background">@color/colorPrimaryDark</item>
</style>
</resources>
Ich habe nicht alle Details, um eine richtige Antwort zu posten, aber nur um eine Anleitung zu geben: Verwenden Sie es mit einem Stil/Thema. Hier können Sie finden, wie man zwischen ihnen zur Laufzeit http://stackoverflow.com/questions/19125163/apply-a-theme-to-an-activity-in-android – Budius
@NullPointerException tatsächlich ich mache es in meiner Anwendung aber Ich ändere nicht das ganze Thema. Ich ändere nur 'Statusbar'-Farbe,' Toolbar'-Farbe, Fab-Farbe und jede andere Farbe, was auch immer ich will, programmatisch basierend auf einem Farbwert in 'SharedPreferences'. Wenn Sie möchten, kann ich Ihnen meinen Code geben. Aber wenn du etwas überprüfen willst, kann ich vorschlagen, dass du folgendes siehst: [android-change-app-theme-runtime] (https://www.linkedin.com/pulse/android-change-app-theme-runtime-ali- muzaffar) –
@ NullPointerException Ich habe eine Erklärung geschrieben, wie man das bekommen kann, habe auch einige Quellen gepostet, damit man ein breiteres Wissen über die Sache haben kann. –