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文件了,一个文件确定样式就搞定

  • 相关阅读:
    区间DP+next求循环节 uva 6876
    连分数(分数类模板) uva6875
    二分+最短路 uvalive 3270 Simplified GSM Network(推荐)
    叉积判断 POJ1696
    树形DP+树状数组 HDU 5877 Weak Pair
    团 大连网赛 1007 Friends and Enemies
    微信支付少一分钱
    数据类型的转换
    什么是机器学习
    config.m4
  • 原文地址:https://www.cnblogs.com/wenhui92/p/7135592.html
Copyright © 2011-2022 走看看