Android 优化设置textview';使用BindingAdapter的s样式

Android 优化设置textview';使用BindingAdapter的s样式,android,optimization,android-styles,android-databinding,Android,Optimization,Android Styles,Android Databinding,我想根据特定条件设置TextView的样式,我正在项目中使用数据绑定。我可以使用BindingAdapter实现这一点 public final class BindingAdapters { @BindingAdapter({"bindStyle"}) public static void setFontStyle(TextView textView, String typefaceName) { textView.setTextAppearance(cont

我想根据特定条件设置
TextView
的样式,我正在项目中使用数据绑定。我可以使用
BindingAdapter
实现这一点

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);}
}
xml

这里,我在strings.xml中声明了两个字符串,并根据条件将其中一个字符串传递给
setFontStyle
方法,并根据传递的字符串决定设置哪种样式

但我想知道有没有更好的办法?是否有任何方法可以直接将样式传递给
setFontStyle
方法,并将其设置为
TextView
,以便该方法可以用于整个项目。或者其他更好的使用数据绑定设置样式的方法

您可以像下面那样创建绑定适配器

XML


app:bindStyle=“@{val}”
为什么需要检查两次条件才能应用样式。您可以将逻辑放入绑定适配器本身并相应地应用样式

app:bindStyle="@{val ==xyz ? @string/string1: @string/string2}"
 @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);
        }
         <data>
            <variable
                name="val"
                type="String" />
        </data>

     app:bindStyle="@{val}"