android 自定义adjustnothing,Android自定义View的实现(续)

自定义View会用到TypedArray,attrs.xml和AttributeSet知识

先说一下attrs.xml文件。这个文件定义了自定义View的属性的信息,包括属于哪个控件属性的名称,属性的类型。下面是一个普通的attrs.xml的内容

其中标签declare-styleable的name属性代表了接下来定义的属性的所属控件(只是用来区分不同declare-styleable的代号而且,不一定非要和属性相关的控件的名称一致)。标签attr就是用来的定义具体的属性,name代表属性名,format代表属性的类型。

Attrs.xml文件中属性类型format值的格式

引用型reference

定义:

使用:

Tools:background = “@drawable/图片ID”

颜色型color

定义:

使用:tools:textColor = “#ffffff”

布尔型boolean

定义:

使用:tools: focusable = “true”

尺寸型dimension

定义:

使用:tools: layout_width = “42dip”

浮点型float

定义:

使用:tools: fromAlpha = “1.0”

整型integer

定义:

使用:tools: frameDuration = “100”

字符串string

定义:

使用:tools: apiKey = “dsegergegasefwg”

百分数fraction

定义:

使用:tools: pivotx = “200%”

枚举型enum:

< attr name="orientation">

< enum name="horizontal" value="0" />

< enum name="vertical" value="1" />

< /attr>

使用:android:orientation = "vertical"

标志位、位或运算,格式如下:

< 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>

XML中使用:

android:windowSoftInputMode = "stateUnspecified | stateUnchanged | stateHidden">

属性定义可以指定多种类型:

定义:< attr name = "background" format = "reference|color" />

使用:android:background = "@drawable/图片ID|#00FF00"

TypedArray

与Context类的obtainStyledAttributes方法一起使用,作为一个不同类型的数据的容器使用。使用是如:

TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MyView);

这句一般是使用在自定义View的构造方法中的,其中attrs是构造方法的形参,而R.styleable.MyView是和attrs.xml相关的。MyView是attrs.xml中declare-styleable的name属性的值。如果这个自定义View在attrs.xml文件中对应的declare-styleable的name属性值为A,那么这里就写R.styleable.A

其中包括很多方法,用来获取这个容器中包含的值

·getColor获取颜色值

·getDimension获取尺寸值

这些方法一般都有这两个参数int index, int defValue。其中index为用来查找属性的检索值。如果实在attrs.xml文件中定义的属性,就是R.styleable.xxxx_yyyy。Xxxx代表declare-styleable的name值,yyyy代表attr的name值。

defValue代表默认值,即如果在xml文件中没有设置,可以使用默认值来进行设置。

AttributeSet是一个属性的集合,与一个在XML文件中的标签相联系。如在自定义View中,构造方法中会有一个AttributeSet类型的参数,这个参数就和XML中定义的自定义View相联系的。一般不需要直接使用它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值