前言

官方API

介绍

场合列表
StateListDrawable 是在 XML
中定义的可绘制对象,它按照目的的情事(State),使用四个不同的图像来表示同一个图片。例如,Button小部件可以是多种不同状态(按下、聚焦或这二种状况都不是)中的其中一种,而且可以选用意况列表可绘制对象为每种状态提供不同的背景图片。

您能够在 XML 文件中描述状态列表。每个图形由单纯 <selector> 元素内的
<item> 元素表示。每个 <item>
均使用各个性能来叙述应用作可绘制对象的图样的情事。

卓殊规则:
在每个意况变更期间,将从上到下遍历状态列表,并动用第一个与当前境况异常的门类
—此采用并非基于“最佳匹配”,而是精选切合状态最低标准的首先个序列。

语法

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
    android:constantSize=["true" | "false"]
    android:dither=["true" | "false"]
    android:variablePadding=["true" | "false"] >
    <item
        android:drawable="@[package:]drawable/drawable_resource"
        android:state_pressed=["true" | "false"]
        android:state_focused=["true" | "false"]
        android:state_hovered=["true" | "false"]
        android:state_selected=["true" | "false"]
        android:state_checkable=["true" | "false"]
        android:state_checked=["true" | "false"]
        android:state_enabled=["true" | "false"]
        android:state_activated=["true" | "false"]
        android:state_window_focused=["true" | "false"] />
</selector>

说明

在StateListDrawable中,一组item标签表示的是:状态列表。

(1)selector标签

必备。这不可能不是根元素。包含一个或五个 <item> 元素。
属性:
xmlns:android
字符串。必备。定义 XML 命名空间,其必须是
http://schemas.android.com/apk/res/android“。

android:constantSize
布尔值。要是可绘制对象报告的其中大小在情景变更时保持不变,则值为“true”(大小是具备情形的最大值);假使大小依照当下事态而生成,则值为“false”。默认值为
false。
StateListDrawable的原来大小是否不趁着其情状的改动而更改,因为状态的转移会招致StateListDrawable切换到实际的Drawable,而不同的Drawable具有不同的原始大小。True表示StateListDrawable的原始大小保持不变,这时她的本来面目大小是中间装有Drawable的本来大小的最大值,false则会变动。
亟待留意:假设是把这些drawable当做背景的话,那么这些drawable固有大大小小不管多大,都会拉伸到View的大大小小
只要给ImageView当做src使用,那么,false之后就会drawable的原有大小就变了,并且其并不会拉伸值ImageView的高低,可以赢得一大一下的意义。

android:dither
布尔值。值为“true”时,将在位图的像素配置与屏幕不同时(例如:ARGB 8888
位图和 RGB 565 屏幕)启用位图的震荡;值为“false”时则停用抖动。默认值为
true。

android:variablePadding
布尔值。假如可绘制对象的内边距应基于选取的当前景色而转变,则值为“true”;如若内边距应维持不变(基于所有境况的最大内边距),则值为“false”。启用此意义要求你在情景变更时处理实施布局,这通常不受襄助。默认值为
false。不提出拉开此项

(2)item标签

概念要在少数状态之间拔取的可绘制对象,如其特性所述。必须是
<selector> 元素的子项。
属性:
android:drawable
XML,可绘制对象资源。必备。引用可绘制对象资源。

android:state_pressed
布尔值。假诺在按下对象(例如触摸/点按某按钮)时应使用此项目,则值为“true”;要是在默认的未按下意况时应选拔此项目,则值为“false”。比如ImageView,唯有你设置android:clickable
= true ,就足以满意

android:state_focused
布尔值。即使在对象拥有输入主题(例如当用户选用文本输入时)时应拔取此项目,则值为“true”;假诺在默认的非核心状态时应使用此项目,则值为“false”。

android:state_hovered
布尔值。假设当光标悬停在对象上时应使用此项目,则值为“true”;尽管在默认的非悬停状态时应采取此项目,则值为“false”。通常,这一个可绘制对象可能与用于“聚焦”状态的可绘制对象相同。
此项为 API 级别 14 新引入的安排。

android:state_selected
布尔值。如若在利用定向控件浏览(例如使用方向键浏览列表)的情事下对象为当下用户挑选时应接纳此项目,则值为“true”;如若在未选取对象时应运用此项目,则值为“false”。
当焦点 (android:state_focused)
不充足(例如,列表视图有点子但利用方向键选取中间的门类)时,使用所选状态。

android:state_checkable
布尔值。如若当对象可选中时应运用此项目,则值为“true”;假若当对象不可选中时应采用此项目,则值为“false”。(仅当目标可在可选中与不可选中小部件之间变换时才有用。)提示对象足以体现复选标记的境况标识符。比如checkbox

android:state_checked
布尔值。要是在目标已入选时应利用此项目,则值为“true”;假诺在目的未当选时应运用此项目,则值为“false”。一般也是checkbox这类再选中和非选中之间进行切换的View.

android:state_enabled
布尔值。假设在对象启用(能够收到触摸/点击事件)时应拔取此项目,则值为“true”;假设在对象停用时应利用此项目,则值为“false”。

android:state_activated
布尔值。就算在目的激活作为频频选取(例如,在频频导航视图中“卓越体现”此前入选的列表项)时应采纳此项目,则值为“true”;假诺在对象未激活时应接纳此项目,则值为“false”。
此项为 API 级别 11 新引入的布置。

android:state_window_focused
布尔值。倘使当使用窗口有关键(应用在前台)时应利用此项目,则值为“true”;假若当使用窗口没有问题(例如,通告栏下拉或对话框出现)时应接纳此项目,则值为“false”。

注:请记住,Android
将将使用境况列表中首先个与目的当前场馆非凡的花色。因而,假若列表中的首个类型不含上述任何动静属性,则每一遍都会动用它,这就是默认值应始终位于最终的来头(如以下示例所示)。因为有下边属性组成的状态列表,可能存在交集,所以就由此从上往下匹配,匹配到分外合适就动用哪一个。

相关文章

网站地图xml地图