zoukankan      html  css  js  c++  java
  • 利用StateListDrawable给button动态设置背景

    项目中,遇到相同样式的Button,只是stroke颜色不一样。为了实现一个,就得写两个shape文件,一个selector文件;多个还得重复写。

     解决方法:

    结合StateListDrawable给button动态设置背景

        public void initButton() {
            GradientDrawable fDrawable = (GradientDrawable) getResources().getDrawable(R.drawable.circle_button);
            fDrawable.setColor(Color.RED);
            fDrawable.setStroke(4, Color.BLUE);
            GradientDrawable nDrawable = (GradientDrawable) getResources().getDrawable(R.drawable.circle_button);
            nDrawable.setColor(Color.YELLOW);
            nDrawable.setStroke(4, Color.GREEN);
            StateListDrawable drawable = new StateListDrawable();
            drawable.addState(new int[]{android.R.attr.state_pressed}, fDrawable);
            drawable.addState(new int[0], nDrawable);
            myButton.setBackgroundDrawable(drawable);
        }

    XML文件

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
    
        <solid android:color="#f2f2f2" />
        <stroke
            android:width="4px"
            android:color="#000000" />
        <corners android:radius="100dp" />
    
    </shape>

    这样,对于相同样式,不同颜色的Button,就不需要再去重复写多个XML文件了,一个文件确定样式就搞定

  • 相关阅读:
    C+= concurrent_queue 线程安全测试
    c++ 枚举 在函数中的应用
    shell脚本积累
    hibernate+spring整合增删改事务错误
    checkbox批量删除功能
    html全选和取消全选JS
    hibernate+pageBean实现分页dao层功能代码
    table样式
    WebStorm 11 Lisence server
    Kb,KB,Kbps,Mb,Mbps等一些列概念
  • 原文地址:https://www.cnblogs.com/wenhui92/p/7135592.html
Copyright © 2011-2022 走看看