Canvas ne dessine pas dans la vue personnalisée
J'ai créé une Vue Personnalisée CircleView comme ceci:
public class CircleView extends LinearLayout {
Paint paint1;
public CircleView(Context context) {
super(context);
init();
}
public CircleView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public void init() {
paint1 = new Paint();
paint1.setColor(Color.RED);
}
protected void onDraw(Canvas canvas) {
//super.onDraw(canvas);
canvas.drawCircle(50, 50, 25, paint1);
this.draw(canvas);
}
}
Puis je l'ai inclus sur mon Activité de mise en page racine <RelativeLayout>
:
<com.turkidroid.test.CircleView
android:id="@+id/circle_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerInParent="true" />
Cependant, rien n'a été tiré!
- Suis-je mise en œuvre de la Vue Personnalisée droit?
- Ou est-ce la façon dont j'ai utilisé la Vue Personnalisée?
Quelques Infos:
- Les deux CircleView et MyActivity sont dans le même package:
com.turkidroid.test
. - Dans
onDraw()
méthode, j'ai essayé, y comprissuper.onDraw()
et de le commenter. - Je sais que je peux dessiner un cercle avec beaucoup d'approches plus simples mais mon CircleView sera contiennent plus que de dessiner un cercle. J'ai besoin de faire un Affichage Personnalisé.
source d'informationauteur iTurki
Vous devez vous connecter pour publier un commentaire.
Votre méthode onDraw n'est jamais appelée, vous devez appeler setWillNotDraw(false) dans le constructeur de votre Vue Personnalisée afin d'obtenir onDraw appelle en réalité.
Comme indiqué sur l'Android SDK:
Où est votre
this.draw()
méthode?Cela devrait fonctionner définitivement: