2017-07-27 8 views
0

similar problemsAndroid onDraw ne dessine rien dans EditText personnalisé

J'ai un EditText personnalisé:

public class MyEditText extends AppCompatEditText { 

public MyEditText(Context context) { 
    super(context); 
} 

public MyEditText(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    int width = getMeasuredWidth(); 
    int height = getMeasuredHeight(); 
    canvas.drawCircle(width/2, height/2, Math.min(width, height)/2, getPaint()); 
} 

}

xml:

<com.angcyo.myapplication.MyEditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Hello World!"/> 

Effet normal:

effect

Mais si vous la mise en simultanée android:gravity="right" android:inputType="text"

comme ceci:

<com.angcyo.myapplication.MyEditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Hello World!" 
    android:gravity="right" 
    android:inputType="text"/> 

Eh bien, le résultat est ...

result

Qu'est-il arrivé? ne dessine rien? Essayez d'étendre EditText plutôt que AppCompatEditText.

Répondre

0

Et changez getmeasuredHeight() et getmeasuredWidth() en getHeight() et getWidth() puis voyez.

Initialiser Peinture comme Peinture de peinture = peinture neuve(); paint.setColor (Color.BLACK); et changer le rayon à 50f ou 60f dans le troisième paramètre, puis voir.

+0

oh, pas d'effet ... – angcyo

+0

vérifier ma réponse modifiée – abh22ishek

+0

@Override onDraw protected void (de toile de toile) { super.onDraw (toile); Peinture de peinture = peinture neuve(); paint.setColor (Couleur.BLACK); canvas.drawCircle (getWidth()/2, getHeight()/2, 50f, peinture); } aucun effet ... OMG – angcyo