2017-07-27 28 views
0

similar problems的Android的onDraw不定制的EditText画什么

我有一个自定义的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

发生了什么?不画什么东西?

回答

0

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

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

+0

哦,没有效果... – angcyo

+0

检查我的编辑答案 – abh22ishek

+0

@覆盖 保护无效的onDraw(帆布油画){ super.onDraw(画布); Paint paint = new Paint(); paint.setColor(Color.BLACK); canvas.drawCircle(getWidth()/ 2,getHeight()/ 2,50f,paint); }无效... OMG – angcyo