gpt4 book ai didi

android - 从 xml 布局中获取格式化的资源字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:43:59 28 4
gpt4 key购买 nike

如何从 xml 布局文件中的 res\values\strings.xml 获取格式化字符串?例如:有一个像这样的 res\values\strings.xml:

<resources>
<string name="review_web_url"><a href="%1$s">Read online</a></string>
</resources>

和像这样的 xml 布局文件:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">

<data>
<variable name="model" type="com.example.model.MyModel" />
</data>

<TextView android:text="@string/review_web_url"/>
</layout>

如何获取资源字符串 review_web_url 传递/格式化为值 @{model.anchorHtml} ?

有一种方法可以像我在 java 代码中那样获取这个格式化的字符串:

String anchorString = activity.getString(R.string.review_web_url, model.getAnchorHtml());

但来自 xml 布局?

最佳答案

您可以使用 BindingAdapter!

查看此链接,它将向您介绍 BindingAdapter: https://developer.android.com/reference/android/databinding/BindingAdapter.html

你必须做这样的事情:

@BindingAdapter(values={"textToFormat", "value"})
public static void setFormattedValue(TextView view, int textToFormat, String value)
{
view.setText(String.format(view.getContext().getResources().getString(textToFormat), value));
}

然后,在您的 xml 中,您可以执行如下操作:

<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">

<data>
<variable name="model" type="com.example.model.MyModel" />
</data>

<TextView
...
app:textToFormat="@string/review_web_url"
app:value="@{model.anchorHtml}"/>
</layout>

BindingAdapter 将为您完成艰苦的工作!请注意,您需要将其设为静态和公共(public),以便将其放入 Utils 类中。

关于android - 从 xml 布局中获取格式化的资源字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49010598/

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