android学习笔记16 - TypedArray自定义属性
来源:互联网 发布:nginx 多个虚拟主机 编辑:程序博客网 时间:2024/06/10 02:12
TypedArray用于自定义标签属性。
在目录res/value下面创建一个attr.xml文件,该文件中包含若干个attr集合,就是所有用户自定义TypedArray:
<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="InputView"> <attr name="label" format="string" /> <attr name="special" format="boolean" /> <attr name="refrence" format="boolean" /> <attr name="background" format="string"></attr> <attr name="editType" format="string"></attr> </declare-styleable> <declare-styleable name="TipView"> <attr name="fee" format="string" /> <attr name="type"> <enum name="input" value="0" /> <enum name="confirm" value="1" /> <enum name="card" value="2" /> </attr> </declare-styleable>
包含若干个declare-styleable标签:
<declare-styleable name="InputView">中name定义了变量的名称
<attr name="label" format="string" />标示属性名是label,format指定了该属性类型为string,只能表示字符串。
format还可以指定其他的类型比如:
reference 表示引用,参考某一资源ID
string 表示字符串
color 表示颜色值
dimension 表示尺寸值
boolean 表示布尔值
integer 表示整型值
float 表示浮点值
fraction 表示百分数
enum 表示枚举值
flag 表示位运算
调用方式如下:
首先需要定义一个视图,无论是自定义的view还是系统控件,以下以自定义的LinearLayout为例:
package com.example.parcelableserializable;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Color;import android.util.AttributeSet;import android.util.TypedValue;import android.view.Gravity;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnFocusChangeListener;import android.widget.EditText;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.LinearLayout.LayoutParams;public class InputView extends LinearLayout implements OnFocusChangeListener,OnClickListener {private String label;private TextView labelTv;private LayoutParams labelLp; public InputView(Context context, AttributeSet attrs){super(context, attrs);TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.InputView);label = (String) a.getText(R.styleable.InputView_label);a.recycle();// TODO Auto-generated constructor stublabelTv = new TextView(this.getContext());labelTv.setTextColor(Color.rgb(255, 0, 255));labelTv.setGravity(Gravity.CENTER_VERTICAL);labelTv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12);labelTv.setText(label);labelTv.setPadding(20, 0, 20, 0);setPadding(20, 0, 20, 0);setGravity(Gravity.CENTER_VERTICAL);setOrientation(LinearLayout.HORIZONTAL);setClickable(true);setOnClickListener(this);labelLp = new LayoutParams(android.view.ViewGroup.LayoutParams.WRAP_CONTENT,android.view.ViewGroup.LayoutParams.FILL_PARENT);this.addView(labelTv, labelLp);}@Overridepublic void onClick(View v){// TODO Auto-generated method stub}@Overridepublic void onFocusChange(View v, boolean hasFocus){// TODO Auto-generated method stub}}
修改构造函数context通过调用obtainStyledAttributes方法来获取一个TypeArray,obtainStyledAttributes(int[] attrs)其参数直接styleable中获得
TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.InputView);
label = (String) a.getText(R.styleable.InputView_label);
label = (String) a.getText(R.styleable.InputView_label);
绑定该label,调用结束后务必调用recycle()方法。
使用这个自定义控件:
<com.example.parcelableserializable.InputView android:id="@+id/input_view" android:layout_width="wrap_content" android:layout_height="wrap_content" app:label="测试" />这个app是未重写的标签名。效果如下:
0 0
- android学习笔记16 - TypedArray自定义属性
- 自定义属性学习笔记(TypedArray)
- Android 自定义属性TypedArray
- Android学习笔记_49_Android中自定义属性(attrs.xml,TypedArray的使用)
- Android 笔记:自定义view的属性TypedArray的使用方法
- android自定义视图属性(atts.xml,TypedArray)学习
- (转)android自定义视图属性(atts.xml,TypedArray)学习
- android自定义视图属性(atts.xml,TypedArray)学习
- Android学习之 自定义属性及TypedArray的用法
- android自定义视图属性(atts.xml,TypedArray)学习
- Android自定义属性时TypedArray的使用方法
- Android自定义属性时TypedArray的使用方法
- Android自定义属性时TypedArray的使用方法
- Android自定义属性时TypedArray的使用方法
- Android自定义属性时TypedArray的使用方法
- Android自定义属性时TypedArray的使用方法
- Android自定义属性时TypedArray的使用方法
- Android自定义属性时TypedArray的使用方法
- MySQL垂直和水平切分
- HDFS 联盟(HDFS Federation)
- Android 岗位 应聘所需 技能
- MQ笔记_3-3_常用的命令
- 人事管理系统主界面与登录界面--WPF
- android学习笔记16 - TypedArray自定义属性
- HDU 2444 The Accomodation of Students(判断是否为二分图+最大匹配)
- GooFlow流程设计工具结合Easyui设计工作流
- java String类型的格式化
- lucene两种分页,在solr我还没测试过
- 第三步Linux高级编程
- 图灵机到C语言
- ViewFs Guide
- window.open不被拦截的实现代码