java - 从函数/方法中设置“android:text”值
问题描述
理论上实现存储在远程数据库中的多文化。
在Android中,我们有以下内容:
<TextView
android:id="@+id/loginlabel"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25sp"
android:textStyle="bold"
android:layout_marginTop="5dp"
android:text="@string/login" />
并且正在使用文件text
中的属性值。login
string.xml
现在我的问题是:在属性的活动 xml 中android:text
,我有什么方法可以调用函数/方法(它甚至可以来自静态类)吗?一个有一些业务逻辑并且仍然返回一个字符串的地方。
我知道我可以在我的活动 java 文件中轻松使用以下类型的代码:
TextView loginlabel = (TextView) findViewById(R.id.loginlabel);
loginlabel.setText( GetMyText(R.id.loginlabel) );
但是我试图避免将其写成“百万次”,因为我的 strings.xml 上有几个活动和数百个值。
对于附加信息,我的目的如下:
- 在应用程序启动时,我读取了所有 string.xml 并连接到我的远程服务器(有一个 DB)并验证是否所有字符串都插入了该 DB。
- 使用 string.xml 中该属性的默认值插入缺少的那些。
- 现在,在另一个远程系统中,客户端可以动态地创建新的文化和此属性的翻译。
- 回到 android,我加载了我们可用的当前文化列表,并从 DB 加载值(翻译)。唯一缺少的是将它们“注入”到我使用“字符串”值的地方。
解决方案
这在过去对我有用。
public class MyTextView extends TextView {
public MyTextView(Context context) {
super(context);
}
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
setText(yourMethodWithBusinessLogic());
}
}
不要忘记用这个自定义的替换你的普通文本视图。为方便起见,按 CTRL+SHFT+R。
希望这可以帮助。
推荐阅读
- c# - 为什么我的电子邮件确认令牌无效
- mongodb - MongoDB 插入给出模式验证错误
- python - SciPy“成功”找到不正确的最佳解决方案和“不成功”找到最佳解决方案(投资组合构建)
- python - 如何在 Python 中更新任何流之一后立即异步运行函数
- javascript - 关闭浏览器后清除 cookie 设置 JavaScript
- c# - Int32.Parse("356882") 生成异常 System.FormatException: '输入字符串的格式不正确。'
- c++ - 带有 UTF-8 字符串的 C++“股票行情”
- c - 将 unsigned char 数组转换为 char 数组
- python - Django ManyToManyField 呈现为 object() 而不是描述
- php - PHP 警告:in_array() 期望参数 2 为数组,在 /home/co 中给出 null