2015-09-04 8 views
22

mio file di layout:dati Android vincolanti - 'No resource identifier trovati per l'attributo'

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

mio metodo adattatore vincolante:

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

L'errore che sto ottenendo:

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

Seguito il tutorial da https://developer.android.com/tools/data-binding/guide.html. Qualche idea su cosa potrei fare male?

+0

Stai cercando di aggiungere una risorsa di carattere personalizzato per la tua app da usare? – user5292387

+0

Dove e come viene chiamato setFontName? – Angudroid

+0

Al momento non è importante se sto provando un font personalizzato o no. Volevo solo definire un attributo personalizzato tramite il meccanismo di associazione dei dati di Android. @ Angudroid - controlla il link dal post - il doc dice che il metodo verrà chiamato dal sistema. –

risposta

39

È necessario utilizzare la sintassi di associazione dati. Dovrebbe essere:

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

Ora sto ottenendo anche un altro errore: Errore: (24, 21) Nessun tipo di risorsa specificato (in 'fontName' con valore '@ {"Roboto- Regular.ttf "} '). Esiste un progetto di esempio (github) che mostri questo? –

+0

Sembra che il metodo BindingAdapter non venga trovato. Non sono sicuro del motivo. Gli altri dati vincolanti funzionano per te? –

+0

Sì, le variabili di associazione dei dati funzionano correttamente. Ho provato questo in un nuovo progetto, con solo @BindingAdapter e dà lo stesso errore. –

6

Questo stesso errore può succedere anche se si dimentica la parentesi graffa di chiusura:

android:text="@{viewModel.foo"