zoukankan      html  css  js  c++  java
  • shape--用代码修改shape的颜色属性

    12,select使用注意事项:

    android selector 背景选择器的使用, button (未点击,点击,选中保持状态)效果实现;」

       android selector 背景选择器的使用, button (未点击,点击,选中保持状态)效果实现

    首先看到selector的属性:
    android:state_focused
    android:state_pressed
    android:state_selected
    android:state_enabled
    它们之间的执行是有执行顺序的写xml的时候特别要分析好执行顺序,否则达不到要实现的效果:
    有点击效果,和选中效果。
     
    注意:是有顺序的,否则不起效果;
    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/color_f1f1f1" android:state_pressed="true"></item>
    <item android:drawable="@color/color_f1f1f1" android:state_checked="true"></item>
    <item android:drawable="@color/white"></item>

    </selector>
     
     
    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@drawable/icon_pause_active" android:state_pressed="true"/>
        <item android:drawable="@drawable/icon_pause_active" android:state_selected="true"/>
        <item android:drawable="@drawable/icon_pause_inactive" android:state_enabled="true"/>
    </selector>
     
     
     
    13,====
     

    Android里面经常会使用shape来定制一些View的背景,可以修改View的背景颜色,形状等属性

    一般情况下,shape都是在xml文件里面写死了,今天遇到一个需求,View的形状是圆角的,但是颜色是在代码里面设置的

    最开始的思路是先在代码里给View设置颜色,再在shape里面设置solid属性为透明色

    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <shape xmlns:android="http://schemas.android.com/apk/res/android" >  
    3.     <corners  
    4.         android:topLeftRadius="8dp"  
    5.         android:topRightRadius="8dp"  
    6.         android:bottomLeftRadius="8dp"  
    7.         android:bottomRightRadius="8dp"/>  
    8.       
    9.     <solid  
    10.         android:color="#00000000"/>  
    11.   
    12. </shape>  
     
    1. View.setBackgroundColor(color);  
    2. View.setBackgroundDrawable(R.drawable.shape);  


    很遗憾,不能实现我想要的需求,每设置一次Background,Background就会就会被替换掉

    最后上网Google了下,找到解决方案了http://stackoverflow.com/questions/16775891/how-to-change-solid-color-from-the-code

     
      1. GradientDrawable myGrad = (GradientDrawable)view.getBackground();  
      2. myGrad.setColor(color);  
  • 相关阅读:
    【CodeForces 438D 】The Child and Sequence
    【雅礼集训 2017 Day1】市场
    【POJ2528】Mayor's posters
    【NOIP模拟】图论题Graph
    【BZOJ2654】Tree
    【NOIP模拟】函数
    【NOIP模拟】箱子
    【CQOI2014】数三角形
    【USACO2009Feb】股票市场
    【APIO2009-3】抢掠计划
  • 原文地址:https://www.cnblogs.com/awkflf11/p/5827330.html
Copyright © 2011-2022 走看看