我想根据特定条件设置errno
的样式,并且在项目中使用数据绑定。我可以使用TextView
来做到这一点。
BindingAdapter
xml
public final class BindingAdapters {
@BindingAdapter({"bindStyle"})
public static void setFontStyle(TextView textView, String typefaceName) {
textView.setTextAppearance(context, typefaceName.equals(context.getResources().getString(R.string.string1)) ? R.style.style1 : R.style.style2);}
}
在这里,我在strings.xml中声明了两个字符串,并根据条件和所传递的字符串,将其中一个字符串传递给app:bindStyle="@{val ==xyz ? @string/string1: @string/string2}"
方法,我正在确定要设置的样式。
但是我想知道还有更好的方法吗?有什么方法可以直接将样式传递给setFontStyle
方法并将其设置为setFontStyle
,以便该方法可以用于整个项目。还是使用数据绑定设置样式的其他更好方法?
答案 0 :(得分:1)
您可以创建如下所示的绑定适配器。
@BindingAdapter({"bindStyle"})
public static void setFontStyle(TextView textView, String text) {
if (text.equals("value"))
textView.setTextAppearance(textView.getContext(), R.style.SettingHeading);
else
textView.setTextAppearance(textView.getContext(), R.style.SettingText);
}
XML
<data>
<variable
name="val"
type="String" />
</data>
app:bindStyle="@{val}"
为什么需要两次检查条件才能应用样式。可以将逻辑放入绑定适配器本身,并相应地应用样式。