自定义View-设置padding没有作用的原因及解决

自定义View 差不多许多东西都要重新定义,看代码你就懂了,


<com.kaili.www.test_listview.view.DxView
    android:background="@android:color/holo_red_dark"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:layout_margin="20dp"
    app:circle_color ="@color/colorPrimary"
    android:padding="20dp"/>


@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    int paddingLeft = getPaddingLeft();
    int paddingRight = getPaddingRight();
    int paddingTop = getPaddingTop();
    int paddingBottom = getPaddingBottom();

    int width = getWidth()-paddingLeft-paddingRight;
    int height = getHeight()-paddingBottom-paddingTop;

    int radius  = Math.min(width,height)/2;
    canvas.drawCircle(paddingLeft+width/2,paddingTop+height/2,radius,paint);
}
是不是立马就能明白了,原来是要我们自己处理padding,解决方法就是上面的,

你可能感兴趣的:(android学习之路)