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}"