• Android中自定义属性的使用


     自定义属性: 是指定义可以在布局文件的标签中使用的属性。如TextView控件中的Text属性,但是它是由系统提供的,现如今是由我们自己定义。
    使用自定义视图属性的好处: 这样就可以通过布局xml的方式给视图对象指定自己定义的任意属性值, 而不是仅仅只能使用系统中内定的属性啦。
    属性值的类型(format)有如下几种:

                 1、reference 引用类型值 : @id/...
                 2、 color 颜色类型值     #ff00ff
                 3、 boolean 布尔类型值    true , false
                 4、 dimension 尺寸类型值     dp / px /sp
                 5、 integer 整数类型值       weight  progress max
                 6、float 浮点型值        0.1f
                 7、string 字符串类型值  "atrrs"
                 8、<enum> 枚举类型值 :水平/垂直

                 9、 flag:位或运算

                10、fraction:百分数

    使用步骤:
         一、定义属性: 在values目录下创建attrs.xml

                <declare-styleable name="suibianxue">
                      <attr name="roundColor" format="color"></attr>               
                      <attr name="textColor" format="color"></attr>
                      <attr name="roundWidth" format="dimension"></attr>
                      <attr name="textSize" format="dimension"></attr>
                 </declare-styleable>

         二、 在使用了自定义属性的xml布局文件中引用当前应用的命名空间:

                       eclipse中写成:  xmlns:suibianxue="http://schemas.android.com/apk/res/应用包名"  ( 其中suibianxie可以任意写,   )

                      android studio中写成:  xmlns:suibianxue="http://schemas.android.com/apk/res-auto" ( 其中suibianxie可以任意写,  )

        三、 在自定义视图标签中使用自定义属性
               <com.example.customatrrs.MyTextView
                    android:id="@+id/mytextview"
                    android:layout_width="120dp"
                    android:layout_height="120dp"

                    suibianxue:roundProgressColor="@android:color/holo_red_dark"
                    suibianxue:textColor="@color/text_progress"
                    suibianxue:roundWidth="10dp"
                    suibianxue:textSize="20sp"  />
     

    四、在自定义View类的构造方法中, 取出布局中的自定义属性值
            1、得到所有自定义属性的数组   : TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.customatrrs);
               
           2、获取自定义属性的值, 如果没有指定取默认值
                     roundColor = typedArray.getColor(R.styleable.RoundProgress_roundColor, Color.RED);
                      roundProgressColor = typedArray.getColor(R.styleable.RoundProgress_roundProgressColor, Color.GREEN);
                      textColor = typedArray.getColor(R.styleable.RoundProgress_textColor, Color.GREEN);
                      roundWidth = typedArray.getDimension(R.styleable.RoundProgress_roundWidth, UIUtils.dp2px(10));
                     textSize = typedArray.getDimension(R.styleable.RoundProgress_textSize, UIUtils.dp2px(20));

         3、释放资源数据: typedArray.recycle();


    ---------------------
    作者:liu_xi_xin
    来源:CSDN
    原文:https://blog.csdn.net/liu_xi_xin/article/details/54934545
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    STP生成树协议
    Fiddler快速入门(还有一个功能就是不经过网络,直接模拟一个响应返回给客户端)
    Qt宏Q_OBJECT展开记录
    rem_taobaofix.js
    yield return
    NET full stack framework
    API 网关
    Redis主从高可用缓存
    数据异构解决方案缓存一致性和跨服务器查询
    NET Core 防止跨站请求
  • 原文地址:https://www.cnblogs.com/Im-Victor/p/10114600.html
Copyright © 2020-2023  润新知