public class StateListDrawable
extends DrawableContainer
java.lang.Object | |||
↳ | android.graphics.drawable.Drawable | ||
↳ | android.graphics.drawable.DrawableContainer | ||
↳ | android.graphics.drawable.StateListDrawable |
Known Direct Subclasses |
让您将多个图形图像分配给一个Drawable,并通过字符串ID值替换可见项目。
它可以使用<selector>
元素在XML文件中定义。 每个状态Drawable都是在一个嵌套的<item>
元素中定义的。 有关更多信息,请参阅Drawable Resources的指南。
XML attributes |
|
---|---|
android:constantSize |
If true, the drawable's reported internal size will remain constant as the state changes; the size is the maximum of all of the states. |
android:state_activated |
State value for StateListDrawable , set when a view or its parent has been "activated" meaning the user has currently marked it as being of interest. |
android:state_active |
State value for StateListDrawable , set when a view or drawable is considered "active" by its host. |
android:state_checkable |
State identifier indicating that the object may display a check mark. |
android:state_checked |
State identifier indicating that the object is currently checked. |
android:state_enabled |
State value for StateListDrawable , set when a view is enabled. |
android:state_first |
State value for StateListDrawable , set when a view or drawable is in the first position in an ordered set. |
android:state_focused |
State value for StateListDrawable , set when a view has input focus. |
android:state_last |
State value for StateListDrawable , set when a view or drawable is in the last position in an ordered set. |
android:state_middle |
State value for StateListDrawable , set when a view or drawable is in the middle position in an ordered set. |
android:state_pressed |
State value for StateListDrawable , set when the user is pressing down in a view. |
android:state_selected |
State value for StateListDrawable , set when a view (or one of its parents) is currently selected. |
android:state_single |
State value for StateListDrawable , set when a view or drawable is considered "single" by its host. |
android:state_window_focused |
State value for StateListDrawable , set when a view's window has input focus. |
android:variablePadding |
If true, allows the drawable's padding to change based on the current state that is selected. |
android:visible |
Indicates whether the drawable should be initially visible. |
Public constructors |
|
---|---|
StateListDrawable() |
Public methods |
|
---|---|
void |
addState(int[] stateSet, Drawable drawable) 将新图像/字符串ID添加到该组图像。 |
void |
applyTheme(Resources.Theme theme) 将指定的主题应用于此Drawable及其子项。 |
void |
inflate(Resources r, XmlPullParser parser, AttributeSet attrs, Resources.Theme theme) 从可选的由主题设计的XML资源中扩展此Drawable。 |
boolean |
isStateful() 指示此drawable是否会根据状态更改其外观。 |
Drawable |
mutate() 使这个drawable可变。 |
Protected methods |
|
---|---|
boolean |
onStateChange(int[] stateSet) 如果您认识到指定的状态,请在您的子类中覆盖此内容以更改外观。 |
void |
setConstantState(DrawableContainer.DrawableContainerState state) |
Inherited methods |
|
---|---|
From class android.graphics.drawable.DrawableContainer
|
|
From class android.graphics.drawable.Drawable
|
|
From class java.lang.Object
|
|
From interface android.graphics.drawable.Drawable.Callback
|
如果属实,则随着状态的变化,可绘制的内部大小将保持不变; 大小是所有州的最大值。 如果为false,则大小将根据当前状态而变化。
必须是布尔值,可以是“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 constantSize
。
StateListDrawable
状态值,当视图或其父项已被“激活”时设置,表示用户当前已将其标记为感兴趣。 这是state_checked的替代表示,用于状态应该沿视图层次传播的时间。
必须是布尔值,可以是“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 state_activated
。
StateListDrawable
状态值,当主机认为某个视图或绘图被“活动”时设置。 实际使用情况可能因视图而异。 详情请参阅主机视图文档。
必须是布尔值,可以是“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 state_active
。
指示对象可以显示复选标记的状态标识符。 有关标识符的信息,请参阅state_checked
,该标识符指示是否实际检查。
必须是布尔值,可以是“ true
”或“ false
”。
这也可以是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 state_checkable
。
指示对象当前被检查的状态标识符。 请参阅state_checkable
了解可用于指示任何对象是否可以显示支票的附加标识符,而不管当前是否设置了state_checked。
必须是布尔值,可以是“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 state_checked
。
状态值为 StateListDrawable
,启用视图时设置。
必须是布尔值,可以是“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 state_enabled
。
状态值为StateListDrawable
,当视图或绘图在有序集中的第一个位置时设置。 实际使用情况可能因视图而异。 详情请参阅主机视图文档。
必须是布尔值,可以是“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 state_first
。
状态值为 StateListDrawable
,当视图具有输入焦点时设置。
必须是布尔值,可以是“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 state_focused
。
状态值为StateListDrawable
,当视图或绘图在有序集合的最后位置时设置。 实际使用情况可能因视图而异。 详情请参阅主机视图文档。
必须是布尔值,可以是“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 state_last
。
StateListDrawable
状态值,当视图或绘图在有序集中的中间位置时设置。 实际使用情况可能因视图而异。 详情请参阅主机视图文档。
必须是布尔值,可以是“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 state_middle
。
状态值为 StateListDrawable
,当用户在视图中按下时设置。
必须是布尔值,可以是“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 state_pressed
。
StateListDrawable
状态值,当当前选择视图(或其父项之一)时设置。
必须是布尔值,可以是“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 state_selected
。
StateListDrawable
状态值,当一个视图或drawable被主机视为“单个”时设置。 实际使用情况可能因视图而异。 详情请参阅主机视图文档。
必须是布尔值,可以是“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 state_single
。
状态值为 StateListDrawable
,当视图的窗口具有输入焦点时设置。
必须是布尔值,可以是“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 state_window_focused
。
如果为true,则允许绘制的填充根据所选的当前状态进行更改。 如果为false,则填充将保持不变(基于所有状态的最大填充)。 启用此功能要求可绘制的所有者在状态更改时处理布局,这通常不受支持。
必须是布尔值,可以是“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 variablePadding
。
指示drawable是否应该初始可见。
必须是布尔值,可以是“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 visible
。
void addState (int[] stateSet, Drawable drawable)
将新图像/字符串ID添加到该组图像。
Parameters | |
---|---|
stateSet |
int : - An array of resource Ids to associate with the image. Switch to this image by calling setState(). |
drawable |
Drawable : -The image to show. |
void applyTheme (Resources.Theme theme)
将指定的主题应用于此Drawable及其子项。
Parameters | |
---|---|
theme |
Resources.Theme : the theme to apply |
void inflate (Resources r, XmlPullParser parser, AttributeSet attrs, Resources.Theme theme)
从可选的由主题设计的XML资源中扩展此Drawable。 对于每个Drawable,这不能被调用一次以上。 请注意,框架可能已经调用过这一次从XML资源创建Drawable实例。
Parameters | |
---|---|
r |
Resources : Resources used to resolve attribute values |
parser |
XmlPullParser : XML parser from which to inflate this Drawable |
attrs |
AttributeSet : Base set of attribute values |
theme |
Resources.Theme : Theme to apply, may be null |
Throws | |
---|---|
XmlPullParserException |
|
IOException |
boolean isStateful ()
指示此drawable是否会根据状态更改其外观。 客户可以使用它来确定是否有必要计算它们的状态并调用setState。
Returns | |
---|---|
boolean |
True if this drawable changes its appearance based on state, false otherwise. |
Drawable mutate ()
使这个drawable可变。 这个操作不能逆转。 一个可变的drawable保证不与其他drawable共享它的状态。 当你需要修改从资源加载的drawable的属性时,这是特别有用的。 默认情况下,从同一资源加载的所有可绘制实例共享一个公共状态; 如果修改一个实例的状态,则所有其他实例都将收到相同的修改。 在可变Drawable上调用此方法将不起作用。
Returns | |
---|---|
Drawable |
This drawable. |
boolean onStateChange (int[] stateSet)
如果您认识到指定的状态,请在您的子类中覆盖此内容以更改外观。
Parameters | |
---|---|
stateSet |
int
|
Returns | |
---|---|
boolean |
Returns true if the state change has caused the appearance of the Drawable to change (that is, it needs to be drawn), else false if it looks the same and there is no need to redraw it since its last state. |
void setConstantState (DrawableContainer.DrawableContainerState state)
Parameters | |
---|---|
state |
DrawableContainer.DrawableContainerState
|