TypedArray和attrs.xml

前端之家收集整理的这篇文章主要介绍了TypedArray和attrs.xml前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

TypedArray和attrs.xml和AttributeSet这一系列都是自定义控件属性时要用到的内容

首先说说attrs.xml:它是定义成类似于这种形式的。

  
  
  1. <?xml@H_301_15@version="1.0"@H_301_15@encoding="utf-8"?>
  2. <resources>
  3. <declare-styleable@H_301_15@name="MyView">
  4. <attr@H_301_15@name="textColor"@H_301_15@format="color"></attr>
  5. <attr@H_301_15@name="textSize"@H_301_15@format="dimension"/>
  6. </declare-styleable>
  7. </resources>

1.主要讲讲里面的format属性

. reference:参考某一资源ID。

(1)属性定义:

  
  
  1. <declare-styleable@H_301_15@name="名称">
  2. <attr@H_301_15@name="background"@H_301_15@format="reference"/>
  3. </declare-styleable>

(2)属性使用:

  
  
  1. <ImageView
  2. @H_301_15@android:layout_width="42dip"
  3. @H_301_15@android:layout_height="42dip"
  4. @H_301_15@android:background="@drawable/图片ID"
  5. />

②. color:颜色值。

(1)属性定义:

  
  
  1. <declare-styleable@H_301_15@name="名称">
  2. <attr@H_301_15@name="textColor"@H_301_15@format="color"/>
  3. </declare-styleable>

(2)属性使用:

  
  
  1. <TextView
  2. @H_301_15@android:layout_width="42dip"
  3. @H_301_15@android:layout_height="42dip"
  4. @H_301_15@android:textColor="#00FF00"
  5. />

③. boolean:布尔值。

(1)属性定义:

  
  
  1. <declare-styleable@H_301_15@name="名称">
  2. <attr@H_301_15@name="focusable"@H_301_15@format="boolean"/>
  3. </declare-styleable>

(2)属性使用:

  
  
  1. <Button
  2. @H_301_15@android:layout_width="42dip"
  3. @H_301_15@android:layout_height="42dip"
  4. @H_301_15@android:focusable="true"
  5. />

④. dimension:尺寸值。

(1)属性定义:

  
  
  1. <declare-styleable@H_301_15@name="名称">
  2. <attr@H_301_15@name="layout_width"@H_301_15@format="dimension"/>
  3. </declare-styleable>

(2)属性使用:

  
  
  1. <Button
  2. @H_301_15@android:layout_width="42dip"
  3. @H_301_15@android:layout_height="42dip"
  4. />

⑤. float:浮点值。

(1)属性定义:

  
  
  1. <declare-styleable@H_301_15@name="AlphaAnimation">
  2. <attr@H_301_15@name="fromAlpha"@H_301_15@format="float"/>
  3. <attr@H_301_15@name="toAlpha"@H_301_15@format="float"/>
  4. </declare-styleable>

(2)属性使用:

  
  
  1. <alpha
  2. @H_301_15@android:fromAlpha="1.0"
  3. @H_301_15@android:toAlpha="0.7"
  4. />

⑥. integer:整型值。

(1)属性定义:

  
  
  1. <declare-styleable@H_301_15@name="AnimatedRotateDrawable">
  2. <attr@H_301_15@name="visible"/>
  3. <attr@H_301_15@name="frameDuration"@H_301_15@format="integer"/>
  4. <attr@H_301_15@name="framesCount"@H_301_15@format="integer"/>
  5. <attr@H_301_15@name="pivotX"/>
  6. <attr@H_301_15@name="pivotY"/>
  7. <attr@H_301_15@name="drawable"/>
  8. </declare-styleable>

(2)属性使用:

  
  
  1. <animated-rotate
  2. @H_301_15@xmlns:android="http://schemas.android.com/apk/res/android"
  3. @H_301_15@android:drawable="@drawable/图片ID"
  4. @H_301_15@android:pivotX="50%"
  5. @H_301_15@android:pivotY="50%"
  6. @H_301_15@android:framesCount="12"
  7. @H_301_15@android:frameDuration="100"

⑦. string:字符串。

(1)属性定义:

  
  
  1. <declare-styleable@H_301_15@name="MapView">
  2. <attr@H_301_15@name="apiKey"@H_301_15@format="string"/>
  3. </declare-styleable>

(2)属性使用:

  
  
  1. <com.google.android.maps.MapView
  2. @H_301_15@android:layout_width="fill_parent"
  3. @H_301_15@android:layout_height="fill_parent"
  4. @H_301_15@android:apiKey="0jOkQ80oD1JL9C6HAja99uGXCRiS2CGjKO_bc_g"
  5. />

⑧. fraction:百分数。

(1)属性定义:

  
  
  1. <declare-styleable@H_301_15@name="RotateDrawable">
  2. <attr@H_301_15@name="visible"/>
  3. <attr@H_301_15@name="fromDegrees"@H_301_15@format="float"/>
  4. <attr@H_301_15@name="toDegrees"@H_301_15@format="float"/>
  5. <attr@H_301_15@name="pivotX"@H_301_15@format="fraction"/>
  6. <attr@H_301_15@name="pivotY"@H_301_15@format="fraction"/>
  7. <attr@H_301_15@name="drawable"/>
  8. </declare-styleable>

(2)属性使用:

  
  
  1. <rotate
  2. @H_301_15@xmlns:android="http://schemas.android.com/apk/res/android"
  3.   @H_301_15@android:interpolator="@anim/动画ID"
  4. @H_301_15@android:fromDegrees="0"
  5.   @H_301_15@android:toDegrees="360"
  6. @H_301_15@android:pivotX="200%"
  7. @H_301_15@android:pivotY="300%"
  8.  @H_301_15@android:duration="5000"
  9. @H_301_15@android:repeatMode="restart"
  10. @H_301_15@android:repeatCount="infinite"
  11. />

⑨. enum:枚举值

(1)属性定义:

  
  
  1. <declare-styleable@H_301_15@name="名称">
  2. <attr@H_301_15@name="orientation">
  3. <enum@H_301_15@name="horizontal"@H_301_15@value="0"/>
  4. <enum@H_301_15@name="vertical"@H_301_15@value="1"/>
  5. </attr>
  6. </declare-styleable>

(2)属性使用:

  
  
  1. <LinearLayout
  2. @H_301_15@xmlns:android="http://schemas.android.com/apk/res/android"
  3. @H_301_15@android:orientation="vertical"
  4. @H_301_15@android:layout_width="fill_parent"
  5. @H_301_15@android:layout_height="fill_parent"
  6. >
  7. </LinearLayout>

10. flag:位或运算。

(1)属性定义:

  
  
  1. <declare-styleable@H_301_15@name="名称">
  2. <attr@H_301_15@name="windowSoftInputMode">
  3. <flag@H_301_15@name="stateUnspecified"@H_301_15@value="0"/>
  4. <flag@H_301_15@name="stateUnchanged"@H_301_15@value="1"/>
  5. <flag@H_301_15@name="stateHidden"@H_301_15@value="2"/>
  6. <flag@H_301_15@name="stateAlwaysHidden"@H_301_15@value="3"/>
  7. <flag@H_301_15@name="stateVisible"@H_301_15@value="4"/>
  8. <flag@H_301_15@name="stateAlwaysVisible"@H_301_15@value="5"/>
  9. <flag@H_301_15@name="adjustUnspecified"@H_301_15@value="0x00"/>
  10. <flag@H_301_15@name="adjustResize"@H_301_15@value="0x10"/>
  11. <flag@H_301_15@name="adjustPan"@H_301_15@value="0x20"/>
  12. <flag@H_301_15@name="adjustNothing"@H_301_15@value="0x30"/>
  13. </attr>
  14. </declare-styleable>

  
  
  1. <activity
  2. @H_301_15@android:name=".StyleAndThemeActivity"
  3. @H_301_15@android:label="@string/app_name"
  4. @H_301_15@android:windowSoftInputMode="stateUnspecified|stateUnchanged | stateHidden">
  5. <intent-filter>
  6. <action@H_301_15@android:name="android.intent.action.MAIN"/>
  7. <category@H_301_15@android:name="android.intent.category.LAUNCHER"/>
  8. </intent-filter>
  9. </activity>


注意:

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

(1)属性定义:

  
  
  1. <declare-styleable@H_301_15@name="名称">
  2. <attr@H_301_15@name="background"@H_301_15@format="reference|color"/>
  3. </declare-styleable>

(2)属性使用:

  
  
  1. <ImageView
  2. @H_301_15@android:layout_width="42dip"
  3. @H_301_15@android:layout_height="42dip"
  4. @H_301_15@android:background="@drawable/图片ID|#00FF00"
  5. />

下面是一个布局文件

  
  
  1. <?xml
  2. @H_301_15@version="1.0"@H_301_15@encoding="utf-8"?>
  3. <LinearLayout
  4. @H_301_15@xmlns:android="http://schemas.android.com/apk/res/android"
  5. //自定义的View的路径为com.xc.demo
  6. @H_301_15@xmlns:test="http://schemas.android.com/apk/res/com.xc.demo"
  7. @H_301_15@android:orientation="vertical"
  8. @H_301_15@android:layout_width="fill_parent"
  9. @H_301_15@android:layout_height="fill_parent"
  10. >
  11. <TextView
  12. @H_301_15@android:layout_width="fill_parent"
  13. @H_301_15@android:layout_height="wrap_content"
  14. @H_301_15@android:text="@string/hello"
  15. />
  16. <com.xc.demo.MyView
  17. @H_301_15@android:layout_width="fill_parent"
  18. @H_301_15@android:layout_height="fill_parent"
  19. //这里引用改变字体和颜色 textColor和textSize都是根据前面的attrs.xml文件设置的
  20. @H_301_15@test:textSize="100dp"
  21. @H_301_15@test:textColor="#ff0000"
  22. />
  23. </LinearLayout>

2.TypedArray的作用是在代码中设置。

  
  
  1. publicMyView(Contextcontext,AttributeSetattrs){
  2. this(context);
  3. TypedArraya=context
  4. .obtainStyledAttributes(attrs,R.styleable.MyView);
  5. intcolor=a.getColor(R.styleable.MyView_textColor,0XFF0000FF);
  6. floatsize=a.getDimension(R.styleable.MyView_textSize,50);
  7. mPaint.setColor(color);
  8. mPaint.setTextSize(size);
  9. a.recycle();
  10. }

R.styleable.MyView是attrs.xml中<declare-styleable name="MyView">的名字

具体的设置是依靠名字+"_"+名字得到来设置的。

3.如果代码和xml中都设置了,一般以xml中设置为先。

本文出自 “千寻博客,请务必保留此出处http://www.jb51.cc/article/p-gpxgtuvz-ue.html

原文链接:https://www.f2er.com/xml/298336.html

猜你在找的XML相关文章