Lisa Wray の投稿TextView
で説明されているように、カスタム フォントを 1 行で適用しようとしています。は、に入るアイテムの一部ですTextView
RecyclerView
最上位のビルド ファイルにデータ バインディングの依存関係を追加しました。
classpath 'com.android.tools.build:gradle:1.3.0'
classpath "com.android.databinding:dataBinder:1.0-rc1"
メイン モジュールにもプラグインを適用しました。
apply plugin: 'com.android.application'
apply plugin: 'com.android.databinding'
item.xml
に追加されるファイルは次のとおりですRecyclerView
。
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/tools">
<data></data>
<android.support.v7.widget.CardView
android:id="@+id/card_view"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="100dp"
android:layout_height="130dp"
android:layout_gravity="center"
card_view:cardCornerRadius="2dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="100dp"/>
<TextView
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:font="@{@string/font_yekan}"/>
</LinearLayout>
</android.support.v7.widget.CardView>
</layout>
layout
ルート要素を追加app:font="@{@string/font_yekan}"
し、静的セッター メソッドと組み合わせました。
@BindingAdapter({"bind:font"})
public static void setFont(TextView textView, String fontName) {
textView.setTypeface(Typeface.createFromAsset(textView.getContext().getAssets(), "fonts/" + fontName));
}
トリックを行う必要があります。しかし、プログラムを実行しても、フォントは変更されません。ただし、上記の静的メソッドを削除すると、次のエラーが発生します。
パラメータ タイプが java.lang.String の属性 'app:font' のセッターが見つかりません。
そのため、データ バインディング フレームワークはバインディングを認識しましたが、セッター メソッドは呼び出されません (ログは出力を出力しません)。
ここで何が問題なのですか?