gpt4 book ai didi

android - 动态设置主题颜色

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:34:11 38 4
gpt4 key购买 nike

我在我的 android 应用程序中(动态地)使用主题,如下所示:

my_layout.xml(提取):

<TextView
android:id="@+id/myItem"
style="?my_item_style" />

attrs.xml(提取):

<attr name="my_item_style" format="reference" />

themes.xml(提取):

<style name="MainTheme.Blue">
<item name="my_item_style">@style/my_item_style_blue</item>
</style>

<style name="MainTheme.Green">
<item name="my_item_style">@style/my_item_style_green<item>
</style>

styles.xml(提取):

<style name="my_item_style_blue">
<item name="android:textColor">@color/my_blue</item>
</style>

<style name="my_item_style_green">
<item name="android:textColor">@color/my_blue</item>
</style>

因此,如您所见,我正在动态设置主题。我正在使用这个类:

public class ThemeUtils {

private static int sTheme;
public final static int THEME_BLUE = 1;
public final static int THEME_GREEN = 2;

public static void changeToTheme(MainActivity activity, int theme) {
sTheme = theme;
activity.startActivity(new Intent(activity, MyActivity.class));
}

public static void onActivityCreateSetTheme(Activity activity)
{
switch (sTheme)
{
default:
case THEME_DEFAULT:
case THEME_BLUE:
activity.setTheme(R.style.MainTheme_Blue);
break;
case THEME_GREEN:
activity.setTheme(R.style.MainTheme_Green);
break;
}
}

我想知道的是,有没有办法在代码中执行此操作(更改主题颜色)?例如,我有以下代码(摘录):

((TextView) findViewById(R.id.myItem)).setTextColor(R.color.blue);

这可以通过一些辅助方法来完成,该方法将对可用主题使用 switch 命令并为主题返回正确的颜色。但我想知道是否有更好、更好、更快的方法。

谢谢!

最佳答案

我终于用下面的方法完成了:

public static int getColor(String colorName) {
Context ctx = getContext();
switch (sTheme) {
default:
case THEME_DEFAULT:
return ctx.getResources().getIdentifier("BLUE_" + colorName, "color", ctx.getPackageName());
case THEME_BLUE:
return ctx.getResources().getIdentifier("BLUE_" + colorName, "color", ctx.getPackageName());
case THEME_GREEN:
return ctx.getResources().getIdentifier("GREEN_" + colorName, "color", ctx.getPackageName());
}
}

这会根据我的主题返回颜色(我使用了前缀)。

关于android - 动态设置主题颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42922516/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com