Android自定义属性,attr format取值类型

这里先举个简单的例子,其他可以参考后面的.

实例

自定义attr.xml

 
    
  1. xml version="1.0" encoding="utf-8"?>
  2. name="text" format="string"/>
  3. name="textColor" format="color"/>
  4. name="GuaView">
  5. name="text" />
  6. name="textColor" />

layout 文件中使用自定义属性

 
    
  1. xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. xmlns:doov="http://schemas.android.com/apk/res/com.doov.guaguaka"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. >
  7. android:layout_width="wrap_content"
  8. android:layout_height="wrap_content"
  9. android:layout_centerInParent="true"
  10. doov:text="@string/price"
  11. doov:textColor="@android:color/black"
  12. />

命名规则
方式一:
    命名空间写法:xmlns:空间名="http://schemas.Android.com/apk/res/自定义组件所在包名" 
             空间名随便定义,引用时保持一致,如myandroid
方式二:
    命名空间写法:xmlns:空间名="http://schemas.android.com/apk/res-auto" 
             空间名随便定义,引用时保持一致,如myandroid
 区别:
Issue 9656: Library projects don't support custom XML attributes for custom classes
Solution:
Upgrade to latest SDK & ADT version (fixed was released since r17) and usehttp://schemas.android.com/apk/res-auto as custom attributes' namespace URI, see Revisions for ADT 17.0.0:
Added support for custom views with custom attributes in libraries. Layouts using custom attributes must use the namespace URI http://schemas.android.com/apk/res-auto instead of the URI that includes the app package name. This URI is replaced with the app specific one at build time.
如果你当前工程是做为lib使用,那么你如上所写 ,会出现找不到自定义属性的错误 ,这时需要使用"http://schemas.android.com/apk/res-auto"

构造函数中获取自定义属性的值 

 
    
  1. public GuaView(Context context, AttributeSet attrs, int defStyleAttr,
  2. int defStyleRes) {
  3. super(context, attrs, defStyleAttr, defStyleRes);
  4. initView();
  5. TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.GuaView, defStyleAttr, defStyleRes);
  6. int number = a.getIndexCount();
  7. for (int i = 0; i < number; i++) {
  8. int attr = a.getIndex(i);
  9. switch (attr) {
  10. case R.styleable.GuaView_text:
  11. mText = (String) a.getText(i);
  12. break;
  13. case R.styleable.GuaView_textColor:
  14. mTextColor = a.getColor(i, 0x000000);
  15. break;
  16. default:
  17. break;
  18. }
  19. }
  20. }

1. reference:参考某一资源ID。 

    (1)属性定义: 
             
                    
             
    (2)属性使用: 
             
                     android:layout_width = "42dip" 
                     android:layout_height = "42dip" 
                     android:background = "@drawable/图片ID" 
                     /> 

2. color:颜色值。 

    (1)属性定义: 
             
                    
             
    (2)属性使用: 
           
                     android:layout_width = "42dip" 
                     android:layout_height = "42dip" 
                     android:textColor = "#00FF00" 
                     /> 

3. boolean:布尔值。 

    (1)属性定义: 
             
                    
             
    (2)属性使用: 
           
                    android:layout_width = "42dip" 
                    android:layout_height = "42dip" 
                    android:focusable = "true" 
                    /> 

4. dimension:尺寸值。 

    (1)属性定义: 
             
                    
             
    (2)属性使用: 

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

5. float:浮点值。 


    (1)属性定义: 
             
                    
                    
             
    (2)属性使用: 
           
                   android:fromAlpha = "1.0" 
                   android:toAlpha = "0.7" 
                   /> 

6. integer:整型值。 


    (1)属性定义: 
             
                    
                    
                    
                    
                    
                    
             
    (2)属性使用: 
           
                   xmlns:android = "http://schemas.android.com/apk/res/android" 
                   android:drawable = "@drawable/图片ID" 
                   android:pivotX = "50%" 
                   android:pivotY = "50%" 
                   android:framesCount = "12" 
                   android:frameDuration = "100" 
                   /> 

7. string:字符串。 


    (1)属性定义: 
             
                    
             
    (2)属性使用: 
           
                    android:layout_width = "fill_parent" 
                    android:layout_height = "fill_parent" 
                    android:apiKey = "0jOkQ80oD1JL9C6HAja99uGXCRiS2CGjKO_bc_g" 
                    /> 

8. fraction:百分数。 

    (1)属性定义: 
             
                    
                    
                    
                    
                    
                    
             
    (2)属性使用: 
           
                   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" 
                   /> 

9. enum:枚举值。 

    (1)属性定义: 
             
                    
                           
                           
                               
             
    (2)属性使用: 
           
                    xmlns:android = "http://schemas.android.com/apk/res/android" 
                    android:orientation = "vertical" 
                    android:layout_width = "fill_parent" 
                    android:layout_height = "fill_parent" 
                    > 
             

10. flag:位或运算。 

     (1)属性定义: 
              
                     
                             
                             
                             
                             
                             
                             
                             
                             
                             
                             
                              
              
     (2)属性使用: 
           
                   android:name = ".StyleAndThemeActivity" 
                   android:label = "@string/app_name" 
                   android:windowSoftInputMode = "stateUnspecified | stateUnchanged | stateHidden"> 
                    
                           
                           
                    
              

     注意: 

     属性定义时可以指定多种类型值。 
    (1)属性定义: 
             
                    
             
    (2)属性使用: 
             
                     android:layout_width = "42dip" 
                     android:layout_height = "42dip" 
                     android:background = "@drawable/图片ID|#00FF00" 
                     />

你可能感兴趣的:(Android)