Android onDraw不会在自定义EditText中绘制任何内容

时间:2017-07-27 06:50:37

标签: android-edittext ondraw

similar problems

我有自定义EditText:

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!"/>

正常效果:

effect

但如果您同时设置 android:gravity="right" android:inputType="text"

像这样:

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

嗯,结果是......

result

发生什么事了?不画任何东西?

1 个答案:

答案 0 :(得分:0)

尝试扩展EditText而不是AppCompatEditText。     然后将getmeasuredHeight()和getmeasuredWidth()更改为getHeight()和getWidth(),然后查看。

初始化Paint就像 Paint paint = new Paint(); paint.setColor(Color.BLACK); 并在第三个参数中将半径更改为50f或60f,然后查看。