假设我有一个包含 2 个主题的应用程序:男性主题和女性主题。主题只是更改了调色板和一些可绘制对象,以迎合用户的喜好。
非常感谢http://www.androidengineer.com/2010/06/using-themes-in-android-applications.html感谢他对这项工作的提示。
但现在假设我想通过该应用程序变得更可爱,不仅要更改颜色和可绘制对象,而且我还想更改字符串。例如,我可能想添加一个海盗主题,然后“提交”将是“Arrrrgh!”
因此,我的基本问题是:如何通过用户可选择的主题更改整个应用程序中的字符串?
编辑:
弥补这一点:该应用程序有 12 个按钮和 32 个 TextView ,我希望具有主题相关性,并且我希望在没有巨大映射或大量自定义属性的情况下完成此操作。
所有 3 个当前解决方案都可以使用。寻找更清洁的东西,虽然我不知道这样的野兽存在。
最佳答案
是的,可以做到,方法如下:首先您必须定义一个主题属性,如下所示:
<attr name="myStringAttr" format="string|reference" />
然后,在你的主题中,添加这一行
<item name="myStringAttr">Yarrrrr!</item>
或
<item name="myStringAttr">@string/yarrrrr</item>
然后您可以像这样在 XML 文件中使用此属性(注意 ?
而不是 @
)。
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="?attr/myStringAttr" />
或者,从代码中,像这样:
public CharSequence resolveMyStringAttr(Context context)
{
Theme theme = context.getTheme();
TypedValue value = new TypedValue();
if (!theme.resolveAttribute(R.attr.myStringAttr, value, true)) {
return null;
}
return value.string;
}
关于android - 主题相关的 Android 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24343268/