Bouton avec coins arrondis et des frontières avec de la couleur

J'ai besoin de votre aide, j'essaie de faire, j'ai essayé de faire un bouton avec coins arrondis et de montrer à la frontière de cela, j'ai besoin d'être en mesure de modifier la couleur par programme en fonction de ce que je l'obtenir à partir d'un service web, jusqu'à présent, j'ai essayé d'ajouter la forme avec un drawable et il a donné la forme arrondie avec la couleur de la bordure mais je ne sais pas si c'est possible de changer la couleur de cela parce que c'est ajouté par défaut dans le drawable

<?xml version="1.0" encoding="UTF-8"?>

<stroke android:width="3dp"
    android:color="#ff000000"
    />

<padding android:left="1dp"
    android:top="1dp"
    android:right="1dp"
    android:bottom="1dp"
    />

<corners android:bottomRightRadius="7dp"
    android:bottomLeftRadius="7dp"
    android:topLeftRadius="7dp"
    android:topRightRadius="7dp"/>

qui est le drawable j'ai été en utilisant, puis j'ai essayé d'ajouter la forme de la création d'une classe personnalisée pour le bouton et la modification de la méthode onDraw, et im obtenir une forme, mais est un peu bizarre

Bouton avec coins arrondis et des frontières avec de la couleur

@Override
protected void onDraw(Canvas canvas) {
    //TODO Auto-generated method stub

    Paint paint = new Paint();
    paint.setStyle(Paint.Style.STROKE);
    paint.setColor(strokeColor);
    paint.setStrokeWidth(5.0f);

    int  h = this.getHeight();
    int  w = this.getWidth();
    //final RectF rect = new RectF();

    RectF oval1 = new RectF(0, 0, w, h);
    canvas.drawRoundRect(oval1, 40, 40, paint);

}

et pour une raison en plus de la forme bizarre im ajoutant le texte par programmation avec le texte de la méthode et de ne pas montrer, il obtient la couleur pour le contour mais pas le texte

buttonCTA = ButterKnife.findById(this, R.id.btnCTA);
        buttonCTA.setTextColor(Color.parseColor(valueColor));
        buttonCTA.setStrokeColor(valueColor);
        buttonCTA.setText("test");