当前位置:  开发笔记 > Android > 正文

带圆角和带颜色边框的按钮

如何解决《带圆角和带颜色边框的按钮》经验,为你挑选了2个好方法。

我需要你帮助我尝试做的事情,我一直在尝试制作一个带圆角的按钮,只显示它的边框,我需要能够以编程方式更改颜色,具体取决于我从Web服务获得的内容,到目前为止,我尝试添加带有drawable的形状,它给出了带有边框颜色的圆形形状,但我不知道是否可以更改它的颜色,因为它默认添加到drawable中







这是我正在使用的drawable,然后我尝试添加形状为按钮创建一个自定义类并更改onDraw方法,并且我得到一个形状但有点奇怪

圆形

@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);

}

由于某种原因,除了奇怪的形状我用编程方式添加文本与设置文本方法,它没有显示,它获得笔画的颜色,但不是文本

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

小智.. 8

这是你需要的.

    public static void setRoundedDrawable(Context context, View view, int backgroundColor, int borderColor) {
    GradientDrawable shape = new GradientDrawable();
    shape.setShape(GradientDrawable.RECTANGLE);
    shape.setCornerRadius(20f);
    shape.setColor(backgroundColor);
    if (borderColor != 0){
        shape.setStroke(2f, borderColor);
    }
    view.setBackgroundDrawable(shape);
}

您可以根据需要更改拐角半径和行程宽度.希望能帮助到你!



1> 小智..:

这是你需要的.

    public static void setRoundedDrawable(Context context, View view, int backgroundColor, int borderColor) {
    GradientDrawable shape = new GradientDrawable();
    shape.setShape(GradientDrawable.RECTANGLE);
    shape.setCornerRadius(20f);
    shape.setColor(backgroundColor);
    if (borderColor != 0){
        shape.setStroke(2f, borderColor);
    }
    view.setBackgroundDrawable(shape);
}

您可以根据需要更改拐角半径和行程宽度.希望能帮助到你!



2> Sohail Zahid..:

round_background.xml在drawable文件夹中创建.



    

    

    

设置为背景

 

使用任何视图在运行时更改它.

 Button button = (Button) findViewById(R.id.mybutton);
 GradientDrawable drawable = (GradientDrawable)button.getBackground();
 drawable.setStroke(2, Color.YELLOW);

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有