美文网首页work
Android动态设置shape边框颜色

Android动态设置shape边框颜色

作者: zizi192 | 来源:发表于2018-12-17 18:36 被阅读852次

在开发中,经常遇到一种需求,对文本设置边框背景。常用的方式是通过xml中使用shape来实现。但是该方法面临的问题是每种颜色,每个不同弧度的shape文件都需要一一编写。

现在有如下需求,根据后台配置的颜色来动态设置边框颜色。这个时候可以使用GradientDrawable来直接修改属性或动态创建一个。

动态设置边框和文本颜色

操作背景shape

针对设置了background属性的view,注意必须是shape的背景。可以通过getBackground获取背景并转化为GradientDrawable,进而设置背景边框颜色。当然也可以在GradientDrawable能力范围内设置其它属性。

GradientDrawable drawable = (GradientDrawable) view.getBackground().mutate();
drawable.setStroke(1, color);

但是注意上面使用了getBackground().mutate(),原因可参考Drawable的mutate方法——多ImageView.setAlpha失效问题解决

动态创建

即用代码动态创建一个GradientDrawable后,设置为view的背景。

GradientDrawable drawable = new GradientDrawable();
drawable.setCornerRadius(10);
drawable.setStroke(2,Color.BLUE);
tv.setBackgroundDrawable(drawable);

shape到GradientDrawable的创建

根据Resources.getDrawable方法的调用流程,调用ResourcesImpl.loadDrawable方法,调用Drawable.createFromXmlForDensity方法,调用DrawableInflater.inflateFromXmlForDensity方法,下面是创建时的关键代码片段:


inflateFromTag

这也说明了上面第一种直接操作背景GradientDrawable的方法只适用于shape背景。

相关文章

  • Android动态设置shape边框颜色

    在开发中,经常遇到一种需求,对文本设置边框背景。常用的方式是通过xml中使用shape来实现。但是该方法面临的问题...

  • 动态更换 Shape 的颜色

    android为我们是提供了在代码中动态设置 shape 的颜色的方法。 首先,shape代码是这样的 然后,在 ...

  • Android动态设置背景边框颜色

    控件依赖版本至少25 新建shape_radius2_border1_gray.xml文件 重点来了

  • Flutter UI - Decoration,Flutter

    Flutter 的 Decoration 就是 android 的 shape,可以设置:背景色 背景图 边框 圆...

  • 安卓的控件设置

    1.给图片设置边框 1.创建shape格式的xml右键 res - New - Android resource ...

  • Android动态设置Shape

    需求:根据后台返回不同的颜色值,动态的去设置圆角矩形 动态设置 Shape 的代码: GradientDr...

  • shape

    属性简介 设置shape的形状 设置填充颜色 设置圆弧角度

    SwiftUI 设置边框、透明度、阴影

    前言 1、设置边框 1.1 设置边框颜色 默认为1的边框 解释 1.2 设置边框颜色、宽度 设置边框颜色、宽度 2...

  • Android动态设置Shape

    有过一些开发经验的朋友,在做圆角按钮的背景时可能不再需要.9的切图了,而一般都是在drawable文件夹下面建立一...

  • shape的使用

    shape可以定义一个View空间的,圆角,边框,padding,大小,填充颜色,渐变颜色。 shape定义 1 ...

网友评论

    本文标题:Android动态设置shape边框颜色

    本文链接:https://www.haomeiwen.com/subject/ryfahqtx.html