Wie zu Verwenden Blick.isInEditMode() in benutzerdefinierten Ansichten zu überspringen-code?

Ich bin mit einem benutzerdefinierten Ansicht zu zeigen Farbverlauf gefüllt TextView als Gebrüll:

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

}

Funktioniert es fein auf dem Gerät oder emulator, aber ich bekomme Rendering-Problem im xml-Vorschau von Android studio, die nahelegt, mit Blick.isInEditMode() in Ihrer benutzerdefinierten Ansichten zu überspringen, code oder Karte von sample-Daten angezeigt, wenn in der IDE ein und zeigt diese Fehler-stack:

java.lang.NullPointerException

Kann jemand bitte helfen Sie mir über diese?

InformationsquelleAutor Ossen | 2014-02-02

Schreibe einen Kommentar