Я хочу дать пользователю возможность выбрать, какой цвет кожи будет иметь приложение. Например, я реализую черную кожу с черными цветами с различными тональностями, а также с белой кожей с тональными чертами.Как дать пользователю возможность переключаться между цветами разных цветов в вашем приложении
Какой наилучший способ достижения этого?
Например, я знаю, что в Android есть файл colors.xml, который должен содержать цвета вашего приложения. Каким образом можно иметь два файла цветов или что-то в этом роде и использовать их в зависимости от выбора пользователя? Может быть, файл styles.xml?
Скажите, пожалуйста, Ваше мнение о том, какие whould быть лучшим подходом для достижения этой цели
Спасибо
МОЙ ВИД:
<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>
Мой styles.xml файл:
<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>
У меня нет всех подробностей, чтобы опубликовать правильный ответ, но просто чтобы дать руководство: используйте его со стилем/темой. Здесь вы можете найти, как изменить между ними во время выполнения. Http://stackoverflow.com/questions/19125163/apply-a-theme-to-an-activity-in-android – Budius
@NullPointerException Фактически я делаю это в своем приложении, но Я не изменю целую тему. Я просто изменяю цвет 'Statusbar', цвет панели инструментов, цвет Fab и любой другой цвет, независимо от того, что я хочу программно на основе значения цвета в' SharedPreferences'. Если вы хотите, я могу дать вам мой код. Но если вы хотите проверить sth, я могу предложить вам посмотреть: [android-change-app-theme-runtime] (https://www.linkedin.com/pulse/android-change-app-theme-runtime-ali- muzaffar) –
@ NullPointerException Я написал объяснение о том, как получить это, также опубликовал некоторые источники, чтобы вы могли получить более широкие знания по этому вопросу. –