美文网首页Android开发
代码修改Shape资源创建的Drawable的坑

代码修改Shape资源创建的Drawable的坑

作者: 43d60efa37c7 | 来源:发表于2019-04-04 17:11 被阅读1次

一般为TextView设置个背景,比如圆角矩形,再加个什么颜色啊等等,可以在xml文件中定义一个Shape。也可以在java代码中实现,使用GradientDrawable类,这就是Shape对应的类。
记录一个坑,多个View使用了同一个shape,然后在某一个地方,用java代码修改了,会影响多个地方。
比如定义一个这样的shape

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="@color/main_color_blue"/>
</shape>

在多个TextView用这个shape设置了背景,然后把某一个TextView背景修改了

GradientDrawable background = (GradientDrawable) view1.getBackground();
background.setColor(Color.RED);

其他的TextView也会受影响,但是不一定立马就表现出来
需要做一下处理

GradientDrawable background = (GradientDrawable) view1.getBackground();
background = (GradientDrawable) background.mutate();
background.setColor(Color.RED);

mutate()方法基本是复制了一个新的,也不用重新设置给view

相关文章

  • 代码修改Shape资源创建的Drawable的坑

    一般为TextView设置个背景,比如圆角矩形,再加个什么颜色啊等等,可以在xml文件中定义一个Shape。也可以...

  • Android知识回顾

    在项目中会用到颜色渐变,我们通过XML实现 创建xml文件 在drawable文件夹下创建shape资源:shap...

  • shape 简单使用

    shape 表示图形的形状,通过 shape 创建的 Drawable 其实体类是 GradientDrawabl...

  • 虚线的实现方法

    水平虚线的实现: 在drawable下新建drawable资源 shape_dotted_line.xml 然后再...

  • Shape自定义图片

    使用自定义shap步骤: 在res下创建drawable目录 在drawable目录下创建一个根标签为shape的...

  • shape:编辑两端为半圆的矩形图案

    一个 drawable 文件完成不同尺寸的端半圆矩形图案绘制。 预期效果 编辑 drawable 资源 shape...

  • Android背景渐变xml

    使用shape的gradient属性实现渐变 效果图 线性渐变 在drawable文件夹下新建shape资源: 属...

  • Drawable资源之shape与Java代码

    XML中shape资源 shape有6个属性: corners:设置圆角,即四个角的弧度 gradient:颜色渐...

  • Drawable Animation

    Drawable Animation允许你定义一组Drawable资源来创建动画效果,即由Drawable资源组成...

  • 关于安卓shape自定义虚线

    内容如题,安卓使用shape自定义虚线。代码如下: 然后再布局中调用该drawable资源文件即可。备注:如调用失...

网友评论

    本文标题:代码修改Shape资源创建的Drawable的坑

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