我需要你帮助我尝试做的事情,我一直在尝试制作一个带圆角的按钮,只显示它的边框,我需要能够以编程方式更改颜色,具体取决于我从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); }
您可以根据需要更改拐角半径和行程宽度.希望能帮助到你!
这是你需要的.
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); }
您可以根据需要更改拐角半径和行程宽度.希望能帮助到你!
round_background.xml
在drawable文件夹中创建.
设置为背景
使用任何视图在运行时更改它.
Button button = (Button) findViewById(R.id.mybutton); GradientDrawable drawable = (GradientDrawable)button.getBackground(); drawable.setStroke(2, Color.YELLOW);