Most visited

Recently visited

Added in API level 1

StateListDrawable

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的指南。

Summary

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

XML attributes

android:constantSize

如果属实,则随着状态的变化,可绘制的内部大小将保持不变; 大小是所有州的最大值。 如果为false,则大小将根据当前状态而变化。

必须是布尔值,可以是“ true ”或“ false ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 constantSize

android:state_activated

StateListDrawable状态值,当视图或其父项已被“激活”时设置,表示用户当前已将其标记为感兴趣。 这是state_checked的替代表示,用于状态应该沿视图层次传播的时间。

必须是布尔值,可以是“ true ”或“ false ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 state_activated

android:state_active

StateListDrawable状态值,当主机认为某个视图或绘图被“活动”时设置。 实际使用情况可能因视图而异。 详情请参阅主机视图文档。

必须是布尔值,可以是“ true ”或“ false ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 state_active

android:state_checkable

指示对象可以显示复选标记的状态标识符。 有关标识符的信息,请参阅state_checked ,该标识符指示是否实际检查。

必须是布尔值,可以是“ true ”或“ false ”。

这也可以是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 state_checkable

android:state_checked

指示对象当前被检查的状态标识符。 请参阅state_checkable了解可用于指示任何对象是否可以显示支票的附加标识符,而不管当前是否设置了state_checked。

必须是布尔值,可以是“ true ”或“ false ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 state_checked

android:state_enabled

状态值为 StateListDrawable ,启用视图时设置。

必须是布尔值,可以是“ true ”或“ false ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 state_enabled

android:state_first

状态值为StateListDrawable ,当视图或绘图在有序集中的第一个位置时设置。 实际使用情况可能因视图而异。 详情请参阅主机视图文档。

必须是布尔值,可以是“ true ”或“ false ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 state_first

android:state_focused

状态值为 StateListDrawable ,当视图具有输入焦点时设置。

必须是布尔值,可以是“ true ”或“ false ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 state_focused

android:state_last

状态值为StateListDrawable ,当视图或绘图在有序集合的最后位置时设置。 实际使用情况可能因视图而异。 详情请参阅主机视图文档。

必须是布尔值,可以是“ true ”或“ false ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 state_last

android:state_middle

StateListDrawable状态值,当视图或绘图在有序集中的中间位置时设置。 实际使用情况可能因视图而异。 详情请参阅主机视图文档。

必须是布尔值,可以是“ true ”或“ false ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 state_middle

android:state_pressed

状态值为 StateListDrawable ,当用户在视图中按下时设置。

必须是布尔值,可以是“ true ”或“ false ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 state_pressed

android:state_selected

StateListDrawable状态值,当当前选择视图(或其父项之一)时设置。

必须是布尔值,可以是“ true ”或“ false ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 state_selected

android:state_single

StateListDrawable状态值,当一个视图或drawable被主机视为“单个”时设置。 实际使用情况可能因视图而异。 详情请参阅主机视图文档。

必须是布尔值,可以是“ true ”或“ false ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 state_single

android:state_window_focused

状态值为 StateListDrawable ,当视图的窗口具有输入焦点时设置。

必须是布尔值,可以是“ true ”或“ false ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 state_window_focused

android:variablePadding

如果为true,则允许绘制的填充根据所选的当前状态进行更改。 如果为false,则填充将保持不变(基于所有状态的最大填充)。 启用此功能要求可绘制的所有者在状态更改时处理布局,这通常不受支持。

必须是布尔值,可以是“ true ”或“ false ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 variablePadding

android:visible

指示drawable是否应该初始可见。

必须是布尔值,可以是“ true ”或“ false ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 visible

Public constructors

StateListDrawable

Added in API level 1
StateListDrawable ()

Public methods

addState

Added in API level 1
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.

applyTheme

Added in API level 21
void applyTheme (Resources.Theme theme)

将指定的主题应用于此Drawable及其子项。

Parameters
theme Resources.Theme: the theme to apply

inflate

Added in API level 21
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

isStateful

Added in API level 1
boolean isStateful ()

指示此drawable是否会根据状态更改其外观。 客户可以使用它来确定是否有必要计算它们的状态并调用setState。

Returns
boolean True if this drawable changes its appearance based on state, false otherwise.

mutate

Added in API level 3
Drawable mutate ()

使这个drawable可变。 这个操作不能逆转。 一个可变的drawable保证不与其他drawable共享它的状态。 当你需要修改从资源加载的drawable的属性时,这是特别有用的。 默认情况下,从同一资源加载的所有可绘制实例共享一个公共状态; 如果修改一个实例的状态,则所有其他实例都将收到相同的修改。 在可变Drawable上调用此方法将不起作用。

Returns
Drawable This drawable.

Protected methods

onStateChange

Added in API level 1
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.

setConstantState

Added in API level 1
void setConstantState (DrawableContainer.DrawableContainerState state)

Parameters
state DrawableContainer.DrawableContainerState

Hooray!