Android 的 shape 标签能够定义控件的样式.在 shape 的标签下,有6个子标签,分别是:
-
corners 设置圆角的弧度
-
gardient 颜色渐变
-
padding 内容与控件边距的距离
-
size 长宽
-
solid 填充物,颜色属性
-
stroke 描边颜色.
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape=["rectangle" | "oval" | "line" | "ring"] >
<corners
android:radius="integer"
android:topLeftRadius="integer"
android:topRightRadius="integer"
android:bottomLeftRadius="integer"
android:bottomRightRadius="integer" />
<gradient
android:angle="integer"
android:centerX="integer"
android:centerY="integer"
android:centerColor="integer"
android:endColor="color"
android:gradientRadius="integer"
android:startColor="color"
android:type=["linear" | "radial" | "sweep"]
android:useLevel=["true" | "false"] />
<padding
android:left="integer"
android:top="integer"
android:right="integer"
android:bottom="integer" />
<size
android:width="integer"
android:height="integer" />
<solid
android:color="color" />
<stroke
android:width="integer"
android:color="color"
android:dashWidth="integer"
android:dashGap="integer" />
</shape>
这是 Google 的一个完整的 shape 的示例文件,列举了常见的 属性.下面将属性详细的进行讲解.
corners
Creates rounded corners for the shape. Applies only when the shape is a rectangle.
用来创建角落的形状.仅适用于控件的形状是一个长方形.
@radius = "20dp" -> 角的弧度,越大越圆
topRight@ -> 右上角
bottomLeft@ -> 右下角
topLeft@ -> 左上角
bottomRight@ -> 左下角
gardient
Specifies a gardient color for the shape
指定一个渐变颜色的形状.
startColor = "#ffffff" -> 起始颜色
endColor -> 结束颜色
centerColor -> 中心的颜色
type -> 渐变模式,默认为 linear 线性渐变
angle -> 渐变角度,必须为45的整数倍
gradientRadius = "50" -> 径向渐变需要指定半径
useLevel -> 暂时未知
padding
定义控件内容距离边界的距离.
bottom/left/right/top
这几个没什么好说的啦
solid
a solid color to fill the shape
填充控件的背景色
color = "#ffffff" -> 颜色的16进制
stroke
a stroke line for the shape
width = "2dp" -> 边框的宽度
color -> 颜色
dashWidth -> 虚线的宽度. - - - -
dashGap -> 两个虚线之间的距离 - - -
shape 的部分就这么多了,用这些属性就可以自定义控件的样式了.
补充一下 selector 的使用方法
Android 中能够将若干个 shape 文件组合到一起,实现控件能够对不同的事件做出响应.这个其实不算很复杂.selector 主要有如下几个:
pressed
focused
selectd
checkable
checked
enabled
window_focused
default
匹配原则:讲匹配的第一项作为控件的样式,所以一般情况下都将 default 放到最后一个.
不是所有的 View 子类都拥有八种状态,比如 Button 对象,拥有 pressed、enabled、window_focused、default 四种状态,如果设置 selected 是无效的,所以要根据组件的具体情况设置。
状态的顺序排放:
pressed->focused->selected->checkable->checked->enabled->window_focused->default
android:state_enabled
View 对象没有被禁用时触发,即 android:enabled="true",否则失效。
android:state_window_focused
当前 Activity 拥有用户输入焦点时被触发,即显示在最前端,如果有退出后台或者弹出 Dialog 会失效。
其他的,都没啥啦~~
网友评论