Comment Utiliser la Vue.isInEditMode() dans les vues personnalisées pour ignorer le code?
Je suis en utilisant une vue personnalisée pour montrer dégradé de couleur rempli TextView comme ci-dessous:
public class GradientTextView extends TextView {
public GradientTextView(Context context) {
super(context, null, -1);
}
public GradientTextView(Context context,
AttributeSet attrs) {
super(context, attrs, -1);
}
public GradientTextView(Context context,
AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
if (!isInEditMode()) {
GradientTextView.getTextColor(context, null, defStyle);
}
}
@Override
protected void onLayout(boolean changed,
int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
if (changed) {
getPaint().setShader(new LinearGradient(
0, 0, 0, getHeight(),
Color.parseColor(Color.WHITE), Color.parseColor(Color.BLACK),
Shader.TileMode.CLAMP));
}
}
}
Il travaille finement sur le dispositif ou l'émulateur, mais je reçois Problème de Rendu dans xml visualiseur de Android studio qui suggère l'utilisation de la Vue.isInEditMode() dans vos vues personnalisées pour ignorer le code ou afficher des données de l'échantillon lorsqu'ils figurent dans l'IDE et affiche cette erreur de pile:
java.lang.NullPointerException
Quelqu'un peut-il m'aider sur ce?
Vous devez vous connecter pour publier un commentaire.
Vue.isInEditMode:
Voici ce que votre vue personnalisée fichier de Mise en page pourrait ressembler à:
Et votre vue correspondante de la classe:
Note: j'ai laissé de côté vos autres constructeurs, mais de voir comment dans le constructeur, je envelopper les choses dans un
isInEditMode()
vérifier.defStyle
comme le-1
semble de mon test à la racine de votreNullPointerException