美文网首页Android自定义View
Android自定义View&自定义属性

Android自定义View&自定义属性

作者: JianLee | 来源:发表于2022-02-14 18:21 被阅读0次

    在我们自定义控件过程中通常都需要自定义属性,方便我们配置View的参数。

    Android自定义属性可分为以下几步:

    自定义属性的声明文件

    编写values/attrs.xml,在其中编写styleable和item等标签元素

        <?xml version="1.0" encoding="utf-8"?>
        <resources>
            <declare-styleable name="test">
                <attr name="text" format="string" />
                <attr name="testAttr" format="integer" />
            </declare-styleable>
        </resources>
    

    自定义View中获取属性

     //在View的构造方法中通过TypedArray获取
    TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.test);
    String text = ta.getString(R.styleable.test_testAttr);
    int textAttr = ta.getInteger(R.styleable.test_text, -1);
    

    在布局中使用

     <com.example.test.MyView
            android:layout_width="120dp"
            android:layout_height="120dp"
            app:testAttr="520"
            app:text="helloworld" />
    

    属性值的类型归纳

    • reference资源id
    //属性定义
    <attr name = "background" format = "reference" />
    //属性使用
    <ImageView android:background = "@drawable/图片ID"/>
    
    • color颜色值
    //属性定义
    <attr name = "textColor" format = "color" />
    //属性使用
    <TextView android:textColor = "#00FF00" />
    
    • boolean布尔值
    //属性定义
    <attr name = "focusable" format = "boolean" />
    //属性使用
    <Button android:focusable = "true"/>
    
    • dimension尺寸值
    //属性定义
    <attr name = "layout_width" format = "dimension" />
    //属性使用
    <Button android:layout_width = "42dp"/>
    
    • float浮点值
    //属性定义
    <attr name = "fromAlpha" format = "float" />
    //属性使用
    <alpha android:fromAlpha = "1.0"/>
    
    • integer整型值
    //属性定义
    <attr name = "framesCount" format="integer" />
    //属性使用
    <animated-rotate android:framesCount = "12"/>
    
    • string字符串
    //属性定义
    <attr name = "text" format = "string" />
    //属性使用
    <TextView android:text = "我是文本"/>
    
    • fraction百分数
    //属性定义
    <attr name = "pivotX" format = "fraction" />
    //属性使用
    <rotate android:pivotX = "200%"/>
    
    • enum枚举
    //属性定义
     <attr name="orientation">
            <enum name="horizontal" value="0" />
            <enum name="vertical" value="1" />
        </attr>
    //属性使用
    <LinearLayout  
        android:orientation = "vertical">
    </LinearLayout>
    
    • flag位或运算
    //属性定义
    <attr name="gravity">
                <flag name="top" value="0x01" />
                <flag name="bottom" value="0x02" />
                <flag name="left" value="0x04" />
                <flag name="right" value="0x08" />
                <flag name="center_vertical" value="0x16" />
                ...
        </attr>
    //属性使用
    <TextView android:gravity="bottom|left"/>
    
    • 混合类型
    //属性定义
     <attr name = "background" format = "reference|color" />
    //属性使用
    <ImageView
    android:background = "@drawable/图片ID" />
    或者:
    <ImageView
    android:background = "#00FF00" />
    

    相关文章

      网友评论

        本文标题:Android自定义View&自定义属性

        本文链接:https://www.haomeiwen.com/subject/bzkhlrtx.html