zoukankan      html  css  js  c++  java
  • 自定义控件属性的获取

    在资源文件目录下新建attrs.xml文件,声明需要的属性

    <?xml version="1.0" encoding="utf-8"?>
    
    <resources><!-- resource是跟标签,可以在里面定义若干个declare-styleable -->
        <declare-styleable name="custom_view"><!-- name定义了变量的名称 -->
            <attr name="custom_color" format="color|reference"></attr> <!-- 定义对应的属性,name定义了属性的名称 -->
            <attr name="custom_size" format="dimension|reference"></attr> <!--每一个发生要定义format指定其类型,类型包括 
              reference   表示引用,参考某一资源ID
              string   表示字符串
              color   表示颜色值
              dimension   表示尺寸值
              boolean   表示布尔值
              integer   表示整型值
              float   表示浮点值
              fraction   表示百分数
              enum   表示枚举值
              flag   表示位运算
            -->
      </declare-styleable>

    第二步: 在构造方法中获取自定义属性,  通过context.obtainStyledAttributes(attrs, R.styleable.custom_view)方法

    public class CustomTextView extends TextView {
        private int textSize;//自定义文件大小
        private int textColor;//自定义文字颜色
    
        //自定义属性,会调用带两个对数的构造方法
        public CustomTextView(Context context, AttributeSet attrs) {
            super(context, attrs);
            TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.custom_view);//TypedArray属性对象
            textSize = ta.getDimensionPixelSize(R.styleable.custom_view_custom_size, 20);//获取属性对象中对应的属性值 
            textColor = ta.getColor(R.styleable.custom_view_custom_color, 0x0000ff);
            setColorAndSize(textColor, textSize);//设置属性
            ta.recycle();
        }
    
        public CustomTextView(Context context) {
            super(context);
        }
    
        private void setColorAndSize(int textColor, int textSize) {
            setTextColor(textColor);
            setTextSize(textSize);
        }
    
    }
  • 相关阅读:
    nginx之location、rewrite配置
    nio buffer
    分布式事务
    彻底剖析RMI底层源码 、手写轻量级RMI框架
    Java RMI详解
    Java提高篇——对象克隆(复制)
    序列化
    分布式通信-tcp/ip 广播
    分布式通信-tcp/ip 单播
    php 图像处理 抠图,生成背景透明png 图片
  • 原文地址:https://www.cnblogs.com/huyang011/p/7617419.html
Copyright © 2011-2022 走看看