2017-02-27 1 views
1

J'ai une vue personnalisée qui utilise également son propre defStyleAttr-à-direImpossible de trouver le style dans le thème actuel pour une vue personnalisée avec defStyleAttr

Un attribut dans le thème actuel qui contient une référence à une ressource de style qui fournit par défaut valeurs pour la vue.

En déclarant ce point de vue dans un fichier de mise en page et en cliquant sur Aperçu dans Android 2.2.3 studio je reçois le message d'erreur suivant:

styles manquants. Est-ce le bon thème choisi pour cette mise en page? Utilisez la zone de liste déroulante Thème ci-dessus la disposition de choisir une autre disposition, ou fixer le style de thème references.Failed pour trouver le style « myCustomStyleAttr » dans le thème actuel

Mes constructeurs de vue sont :

public MyCustomLayout(Context context) { 
    this(context, null); 
} 

public MyCustomLayout(Context context, AttributeSet attrs) { 
    this(context, attrs, R.attr.myCustomStyleAttr); 
} 

public MyCustomLayout(Context context, AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 
    init(attrs, defStyleAttr); 
} 

Je sais qu'il ya beaucoup de questions sur le SO avec les styles manquants. erreur cependant aucune des réponses a fonctionné pour moi et ils étaient principalement liés aux styles AppCompat donc je voulais partager ma solution.

Répondre

1

Ce qui suit a fonctionné pour moi:

public MyCustomLayout(Context context) { 
    this(context, null); 
} 

public MyCustomLayout(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    init(attrs, isInEditMode() ? 0 : R.attr.myCustomStyleAttr); 
} 

public MyCustomLayout(Context context, AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 
    init(attrs, defStyleAttr); 
}