这是我的BindingAdapter
:
public class Bindings{
@BindingAdapter({"font"})
public static void setFont(TextView textView, String fontName) {
textView.setTypeface(FontCache.getInstance(textView.getContext()).get(fontName));
}
}
*而不是使用" font"作为注释参数,我试过" bind:font"," android:font"和" app:font",并做了所有相应的布局中的更改,但仍未调用BindingAdapter
这是我使用BindingAdapter
(bind_layout.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">
<data></data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
font="@{`fontawesome-webfront`}"
android:text="@string/double_left"/>
</LinearLayout>
</layout>
*此布局包含在使用DatabindingUtils.setContentView
这是布局包含bind_layout.xml的活动:
public class ACreateSemester extends AppCompatActivity {
private List<CreateItemView> mCreateItemViews;
private LinearLayout mItemContainer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DataBindingUtil.setContentView(this,R.layout.a_create_items);
mItemContainer = (LinearLayout) findViewById(R.id.item_container);
mItemContainer.addView(new CreateItemView(this, Item.getDefaultItem()));
}
}
我在这里引用的三个文件全部列出。
我知道BindingAdapter
未被调用的方式是因为我在方法和正文中设置断点,并且永远不会达到断点。
知道为什么BindingAdapter
没有被解雇?
答案 0 :(得分:1)
我认为你错过了将你的观点与活动中的viewModel联系起来。
public class ACreateSemester extends AppCompatActivity {
private List<CreateItemView> mCreateItemViews;
private LinearLayout mItemContainer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ACreateItemsBinding binding = DataBindingUtil.setContentView(this,R.layout.a_create_items);
mItemContainer = (LinearLayout) findViewById(R.id.item_container);
mItemContainer.addView(new CreateItemView(this,Item.getDefaultItem()));
binding.setView(YourViewHere);
}
答案 1 :(得分:1)
请确保您已执行此步骤。
fontawesome-webfront
}”更改为app:font =“ @ {fontawesome-webfront
}”
在您的xml中。