Android自定义View【实战教程】1⃣️----attrs.xml详解

本文深入探讨了Android自定义View时如何创建和使用attrs.xml文件。讲解了reference、integer、color、boolean、dimension、float、enum、flag等属性的定义和应用,帮助开发者更好地理解自定义View的属性配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们在自定义View的时候通常需要先完成attrs.xml文件
在values中定义一个attrs.xml 然后添加相关属性
这一篇先详细介绍一下attrs.xml的属性。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    //自定义属性名,定义公共属性
    <attr name="titleText" format="string"/>
    <attr name="titleTextSize" format="dimension"/>
    <attr name="titleTextColor" format="color"/>
    <attr name="image" format="reference"/>
    <attr name="imageScaleType" >
        <enum name="fillXY" value="0"/>
        <enum name="center" value="1"/>
    </attr>

    //自定义控件的主题样式
    <declare-styleable name="CustomImageView">
        <attr name="titleText" />
        <attr name="titleTextSize" />
        <attr name="titleTextColor" />
        <attr name="image" />
        <attr name="imageScaleType" />
    </declare-styleable>


</resources>

reference:参考某一资源ID。

定义:

<declare-styleable name = "名称">  
                   <attr name = "background" format = "reference" />  
</declare-styleable>  

使用:

<ImageView  
                     android:layout_width = "42dip"  
                     android:layout_height = "42dip"  
                     android:background = "@drawable/图片ID"  
                     />  

##color:颜色值
定义:

<declare-styleable name = "名称">  
                   <attr name = "textColor" format = "color" />  
            </declare-styleable>  

使用:

<TextView  
                    android:layout_width = "42dip"  
                    android:layout_height = "42dip"  
                    android:textColor = "#00FF00"  
                    />  

##boolean:布尔值
定义:

<declare-styleable name = "名称">  
                <attr name = "focusable" format = "boolean" />  
</declare-styleable>  

使用:

<Button  
                   android:layout_width = "42dip"  
                   android:layout_height = "42dip"  
                   android:focusable = "true"/>  

##dimension:尺寸值
定义:

<declare-styleable name = "名称">  
                   <attr name = "layout_width" format = "dimension" />  
</declare-styleable>  

使用:

<Button  
                   android:layout_width = "42dip"  
                   android:layout_height = "42dip"  
                  /> 

##float:浮点值
定义:

<declare-styleable name = "AlphaAnimation">  
                   <attr name = "fromAlpha" format = "float" />  
                   <attr name = "toAlpha" format = "float" />  
</declare-styleable>  

使用:

<alpha  
       android:fromAlpha = "1.0"  
       android:toAlpha = "0.7"  
/>  

integer:整型值

定义:

<declare-styleable name="RotateDrawable">  
                   <attr name = "visible" />  
                   <attr name = "fromDegrees" format = "float" />  
                   <attr name = "toDegrees" format = "float" />  
                   <attr name = "pivotX" format = "fraction" />  
                   <attr name = "pivotY" format = "fraction" />  
                   <attr name = "drawable" />  
</declare-styleable>  

使用:

<rotate  
                 xmlns:android = "http://schemas.android.com/apk/res/android"   
               android:interpolator = "@anim/动画ID"  
                 android:fromDegrees = "0"   
               android:toDegrees = "360"  
                 android:pivotX = "200%"  
                 android:pivotY = "300%"   
               android:duration = "5000"  
                 android:repeatMode = "restart"  
                 android:repeatCount = "infinite"  
                />  

##enum:枚举值
定义:

<declare-styleable name="名称">  
                   <attr name="orientation">  
                          <enum name="horizontal" value="0" />  
                          <enum name="vertical" value="1" />  
                   </attr>              
</declare-styleable>  

使用:

<LinearLayout  
                    xmlns:android = "http://schemas.android.com/apk/res/android"  
                    android:orientation = "vertical"  
                    android:layout_width = "fill_parent"  
                    android:layout_height = "fill_parent"  
                    >  
</LinearLayout>  

##flag:位或运算

<declare-styleable name="名称">  
                   <attr name="windowSoftInputMode">  
                           <flag name = "stateUnspecified" value = "0" />  
                           <flag name = "stateUnchanged" value = "1" />  
                           <flag name = "stateHidden" value = "2" />  
                           <flag name = "stateAlwaysHidden" value = "3" />  
                           <flag name = "stateVisible" value = "4" />  
                           <flag name = "stateAlwaysVisible" value = "5" />  
                           <flag name = "adjustUnspecified" value = "0x00" />  
                           <flag name = "adjustResize" value = "0x10" />  
                           <flag name = "adjustPan" value = "0x20" />  
                           <flag name = "adjustNothing" value = "0x30" />  
                    </attr>           
lt;/declare-styleable>  

使用:

<activity  
      android:name = ".StyleAndThemeActivity"  
      android:label = "@string/app_name"  
      android:windowSoftInputMode = "stateUnspecified | stateUnchanged | stateHidden">  
      <intent-filter>  
            <action android:name = "android.intent.action.MAIN" />  
            <category android:name = "android.intent.category.LAUNCHER" />  
      </intent-filter>  
</activity>  


属性定义时可以指定多种类型值

定义:

<declare-styleable name = "名称">  
      <attr name = "background" format = "reference|color" />  
</declare-styleable>  

使用:

<ImageView  
        android:layout_width = "42dip"  
        android:layout_height = "42dip"  
        android:background = "@drawable/图片ID|#00FF00"  
        />  

扫码关注公众号“伟大程序猿的诞生“,更多干货新鲜文章等着你~

公众号回复“资料获取”,获取更多干货哦~

有问题添加本人微信号“fenghuokeji996” 或扫描博客导航栏本人二维码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值