Android data binding - 'No resource identifier found for attribute'

Meine layout Datei:

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

Meine Bindung zum adapter-Methode:

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

Die Fehler, die ich immer bin:

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

Folgte dem tutorial von https://developer.android.com/tools/data-binding/guide.html .
Irgendwelche Ideen was ich tun könnte falsch?

  • Sind Sie versuchen, hinzufügen, um eine benutzerdefinierte schriftart-Ressource für Ihre app zu verwenden?
  • Wo und wie setFontName genannt wird?
  • Nicht wichtig jetzt, wenn ich versuche, eine benutzerdefinierte schriftart oder nicht. Nur wollen, um eine benutzerdefinierte Attribut über den android data binding-Mechanismus. @Angudroid - check den link aus dem post - doc sagt, die Methode wird vom system aufgerufen.
  • okay, also, wenn Sie breakpoint auf "String fontPath" was ist der fontName Wert ?
  • es ist eine compile-Zeit-Fehler. also keine Haltepunkte 🙂
  • Neuerstellen des Projekts behoben dieser Fehler in meinem Fall

Schreibe einen Kommentar