Android データバインディング - 「属性のリソース識別子が見つかりません」質問する

Android データバインディング - 「属性のリソース識別子が見つかりません」質問する

私のレイアウトファイル:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            tools:context=".MainActivity">

<TextView
      android:text="@string/hello_world"
      android:layout_width="wrap_content"
      app:fontName="Roboto-Regular.ttf"
      android:layout_height="wrap_content"/>

</RelativeLayout>

私のバインディングアダプタメソッド:

public class FontBinding {

  @BindingAdapter("bind:fontName")
  public static void setFontName(TextView view, @NonNull String fontName) {
    String fontPath = "/fonts/" + fontName;

    Typeface typeface = Typeface.createFromAsset(view.getContext().getAssets(), fontPath);

    view.setTypeface(typeface);
  }
}

発生したエラー:

Error:(8) No resource identifier found for attribute 'fontName' in package 'com.example.databindingproject'

チュートリアルに従いましたhttps://developer.android.com/tools/data-binding/guide.html何が間違っているのか、何か考えはありますか?

ベストアンサー1

データ バインディング構文を使用する必要があります。次のようになります。

<TextView
      android:text="@string/hello_world"
      android:layout_width="wrap_content"
      app:fontName='@{"Roboto-Regular.ttf"}'
      android:layout_height="wrap_content"/>

おすすめ記事