Android + Reliure de données @style

Tout en utilisant la nouvelle liaison de données api, j'ai constaté que vous ne pouvez pas lier l'attribut "style". Le compilateur se plaint de ne pas trouver le style. Cependant, si je configure simplement le style tel quel, il le trouvera très bien. Par exemple:

Ne fonctionne pas:

  • La boîte de dialogue d'alerte Android n'est pas correctement définie sur Lollipop
  • Comment surveiller les demandes HTTP (obtenir, publier, etc.) que mon application fait dans Android
  • Obtenir et analyser le fichier CSV dans Android
  • Fin TextView avec 3 points à l'aide de maxLength
  • Obtenir un identifiant de périphérique Android depuis ADB et Android SDK
  • GetHeight () vs getLayoutParams (). Hauteur
  • style="@{TextUtils.isEmpty(row.getSubtitle()) ? @style/SubTitle : @style/Title}" 

    travaux:

     style="@style/SubTitle" 

    Erreur:

    Erreur: l'exécution a échoué pour la tâche ': application: compileDebugJavaWithJavac'.

    Java.lang.RuntimeException: erreurs de liaison de données trouvées. **** / erreur de liaison de données **** msg: Les identifiants doivent avoir des types définis par l'utilisateur à partir du fichier XML. SubTitle manque de fichier: /~/test/app/src/main/res/layout/row.xml loc: 48: 71 – 48:78 **** \ erreur de liaison de données ****

    2 Solutions collect form web for “Android + Reliure de données @style”

    La liaison de données n'est malheureusement pas prise en charge pour les styles: https://code.google.com/p/android-developer-preview/issues/detail?id=2613

    Bien que @bwhite soit correct, il peut y avoir des solutions de contournement que vous pouvez faire. Cela dépend de ce que vous devez changer conditionnellement. Par exemple, si vous souhaitez modifier la police en fonction de la condition (ce que je devais faire), vous pouvez le faire en composant un adaptateur de liaison personnalisé.

    En d'autres termes, faire quelque chose comme ceci:

     public class FontBindingAdapter { @BindingAdapter({"bind:font"}) public static void setFont(TextView textView, String typefaceName){ Typeface typeface; // Do something to convert a string to a typeface textView.setTypeface(typeface); } 

    Ensuite, dans votre mise en page, comme ceci:

     <TextView app:font="@{some_condition ? @string/typeface_string_name_bold: @string/typeface_string_name_bold_light}" 

    J'ai utilisé cela dans mon code, en fonction d'une excellente publication: https://plus.google.com/+LisaWrayZeitouni/posts/LTr5tX5M9mb

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.