如何更改原色、原色、深色等
How to change the color primary,color primarydark ,etc
我正在尝试制作一个应用程序,它提供了更改应用程序的 color primary ,color primary dark 的选项。因此用户可以根据选择更改颜色。我想在设置中提供这个选项。所以用户可以在 black , dark blue ,greyblue[=21 之间进行选择=] 等。我知道如何在 xml 中设置应用程序的主题,但我想更改孔应用程序的颜色。
我想更改应用程序中所有 activity 和对话框的主题。因为有人不能像 here 那样更改应用程序的主题。这就是为什么我想尽可能制作不同颜色的文件
Will I have to make different color files as we have to do for different language?
If yes, How I can use the different color files then?
第一步:在 res/values/styles.xml
中为每个颜色选项制作一个主题:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.MyAwesomeApp.Base" parent="Theme.AppCompat">
<!-- Your common styles -->
</style>
<style name="Theme.MyAwesomeApp.Blue" parent="Theme.MyAwesomeApp.Base">
<item name="colorPrimary">@color/material_indigo_500</item>
<item name="colorPrimaryDark">@color/material_indigo_700</item>
<item name="colorAccent">@color/material_light_blue_A200</item>
</style>
<style name="Theme.MyAwesomeApp.Red" parent="Theme.MyAwesomeApp.Base">
<item name="colorPrimary">@color/material_red_500</item>
<item name="colorPrimaryDark">@color/material_red_700</item>
<item name="colorAccent">@color/material_red_A200</item>
</style>
</resources>
第二步:覆盖 activity 的 onCreate()
方法,以便使用所选主题调用 setTheme()
:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(getThemeIdChoosenByUser())
setContentView(R.layout.myAwesomeLayout)
}
如果你有多个 activity 做一个底座 class 然后像这样设置它们
public abstract class ThemeAwareBaseActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(getThemeIdChoosenByUser());
}
private int getThemeIdChoosenByUser() {
// Lookup in SharedPreferences etc.
}
}
public class Activity1 extends ThemeAwareBaseActivity {
@Override
public void onCreate(bundle) {
super.onCreate(bundle);
setContentView(R.layout.layout_for_activity1)
// do extra stuff on your resources, using findViewById on your layout_for_activity1
}
}
我正在尝试制作一个应用程序,它提供了更改应用程序的 color primary ,color primary dark 的选项。因此用户可以根据选择更改颜色。我想在设置中提供这个选项。所以用户可以在 black , dark blue ,greyblue[=21 之间进行选择=] 等。我知道如何在 xml 中设置应用程序的主题,但我想更改孔应用程序的颜色。 我想更改应用程序中所有 activity 和对话框的主题。因为有人不能像 here 那样更改应用程序的主题。这就是为什么我想尽可能制作不同颜色的文件
Will I have to make different color files as we have to do for different language?
If yes, How I can use the different color files then?
第一步:在 res/values/styles.xml
中为每个颜色选项制作一个主题:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.MyAwesomeApp.Base" parent="Theme.AppCompat">
<!-- Your common styles -->
</style>
<style name="Theme.MyAwesomeApp.Blue" parent="Theme.MyAwesomeApp.Base">
<item name="colorPrimary">@color/material_indigo_500</item>
<item name="colorPrimaryDark">@color/material_indigo_700</item>
<item name="colorAccent">@color/material_light_blue_A200</item>
</style>
<style name="Theme.MyAwesomeApp.Red" parent="Theme.MyAwesomeApp.Base">
<item name="colorPrimary">@color/material_red_500</item>
<item name="colorPrimaryDark">@color/material_red_700</item>
<item name="colorAccent">@color/material_red_A200</item>
</style>
</resources>
第二步:覆盖 activity 的 onCreate()
方法,以便使用所选主题调用 setTheme()
:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(getThemeIdChoosenByUser())
setContentView(R.layout.myAwesomeLayout)
}
如果你有多个 activity 做一个底座 class 然后像这样设置它们
public abstract class ThemeAwareBaseActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(getThemeIdChoosenByUser());
}
private int getThemeIdChoosenByUser() {
// Lookup in SharedPreferences etc.
}
}
public class Activity1 extends ThemeAwareBaseActivity {
@Override
public void onCreate(bundle) {
super.onCreate(bundle);
setContentView(R.layout.layout_for_activity1)
// do extra stuff on your resources, using findViewById on your layout_for_activity1
}
}