前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android自定义View【实战教程】1⃣️----attrs.xml详解

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

作者头像
先知先觉
发布2019-01-21 15:26:04
5610
发布2019-01-21 15:26:04
举报

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

代码语言:javascript
复制
<?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。

定义:

代码语言:javascript
复制
<declare-styleable name = "名称">  
                   <attr name = "background" format = "reference" />  
</declare-styleable>  

使用:

代码语言:javascript
复制
<ImageView  
                     android:layout_width = "42dip"  
                     android:layout_height = "42dip"  
                     android:background = "@drawable/图片ID"  
                     />  

color:颜色值

定义:

代码语言:javascript
复制
<declare-styleable name = "名称">  
                   <attr name = "textColor" format = "color" />  
            </declare-styleable>  

使用:

代码语言:javascript
复制
<TextView  
                    android:layout_width = "42dip"  
                    android:layout_height = "42dip"  
                    android:textColor = "#00FF00"  
                    />  

boolean:布尔值

定义:

代码语言:javascript
复制
<declare-styleable name = "名称">  
                <attr name = "focusable" format = "boolean" />  
</declare-styleable>  

使用:

代码语言:javascript
复制
<Button  
                   android:layout_width = "42dip"  
                   android:layout_height = "42dip"  
                   android:focusable = "true"/>  

dimension:尺寸值

定义:

代码语言:javascript
复制
<declare-styleable name = "名称">  
                   <attr name = "layout_width" format = "dimension" />  
</declare-styleable>  

使用:

代码语言:javascript
复制
<Button  
                   android:layout_width = "42dip"  
                   android:layout_height = "42dip"  
                  /> 

float:浮点值

定义:

代码语言:javascript
复制
<declare-styleable name = "AlphaAnimation">  
                   <attr name = "fromAlpha" format = "float" />  
                   <attr name = "toAlpha" format = "float" />  
</declare-styleable>  

使用:

代码语言:javascript
复制
<alpha  
       android:fromAlpha = "1.0"  
       android:toAlpha = "0.7"  
/>  

integer:整型值

定义:

代码语言:javascript
复制
<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>  

使用:

代码语言:javascript
复制
<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:枚举值

定义:

代码语言:javascript
复制
<declare-styleable name="名称">  
                   <attr name="orientation">  
                          <enum name="horizontal" value="0" />  
                          <enum name="vertical" value="1" />  
                   </attr>              
</declare-styleable>  

使用:

代码语言:javascript
复制
<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:位或运算

代码语言:javascript
复制
<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>  

使用:

代码语言:javascript
复制
<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>  

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

定义:

代码语言:javascript
复制
<declare-styleable name = "名称">  
      <attr name = "background" format = "reference|color" />  
</declare-styleable>  

使用:

代码语言:javascript
复制
<ImageView  
        android:layout_width = "42dip"  
        android:layout_height = "42dip"  
        android:background = "@drawable/图片ID|#00FF00"  
        />  
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年03月23日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • reference:参考某一资源ID。
  • color:颜色值
  • boolean:布尔值
  • dimension:尺寸值
  • float:浮点值
  • integer:整型值
  • enum:枚举值
  • flag:位或运算
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档