本文将介绍Android中Resource Types的drawable、menu、layout。如需访问官方原文,您可以点击这些链接:
《Drawable Resources》
《Layout Resource》
《Menu Resource》
如需了解Android中的其他资源介绍(Animation、Color State List、String、Style),您可以点击这个链接:《Android官方文档之App Resources(中)》。
布局资源用于定义组件的布局UI。
文件目录:
res/layout/filename.xml
引用方式:
In Java: R.layout.filename
In XML: @[package:]layout/filename
语法:
<?xml version="1.0" encoding="utf-8"?>
<ViewGroup xmlns:android="http://schemas.android.com/apk/res/android" android:id="@[+][package:]id/resource_name" android:layout_height=["dimension" | "fill_parent" | "wrap_content"] android:layout_width=["dimension" | "fill_parent" | "wrap_content"] [ViewGroup-specific attributes] >
<View android:id="@[+][package:]id/resource_name" android:layout_height=["dimension" | "fill_parent" | "wrap_content"] android:layout_width=["dimension" | "fill_parent" | "wrap_content"] [View-specific attributes] >
<requestFocus/>
</View>
<ViewGroup >
<View />
</ViewGroup>
<include layout="@layout/layout_resource"/>
</ViewGroup>
根标签可以是 ViewGroup
、View
、或 <merge>
之一。
标签及其属性:
<ViewGroup>
:承载其他View的容器。如LinearLayout, RelativeLayout, FrameLayout
等。并不是所有的<ViewGroup>
都能在布局中直接包含View,比如说AdapterView
,它的子View来自于Adapter。
– android:id
:资源ID。
– android:layout_height
:dp或关键字(wrap_content
、match_parent
)。不可缺省。
– android:layout_width
:dp或关键字(wrap_content
、match_parent
)。不可缺省。
<requestFocus>
:任何View都可以包含这个标签,它表示程序第一次加载时,该View获得焦点,该标签只能在一个布局文件中使用一次。
<include>
:引用一个布局。
– layout
:不可缺省。引用一个布局资源。
– android:id
:资源ID。可覆盖引用布局的根View的ID。
– android:layout_height
:可覆盖引用布局的根View的android:layout_height
。
– android:layout_width
:可覆盖引用布局的根View的android:layout_width
。
<merge>
:是一个根标签。但并未占用布局树中的节点。使用该标签包含的元素将被直接替换至引用该标签的布局中。
示例:
<!-- res/layout/main_activity.xml -->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" >
<TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, I am a TextView" />
<Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, I am a Button" />
</LinearLayout>
引用方式:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
}
菜单资源为程序提供菜单项。如Options Menu、Context Menu、submenu 等。在Java中通过MenuInflater
类中的方法引入菜单资源。
文件目录:
res/menu/filename.xml
引用方式:
In Java: R.menu.filename
In XML: @[package:]menu.filename
语法:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@[+][package:]id/resource_name"
android:title="string"
android:titleCondensed="string"
android:icon="@[package:]drawable/drawable_resource_name"
android:onClick="method name"
android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
android:actionLayout="@[package:]layout/layout_resource_name"
android:actionViewClass="class name"
android:actionProviderClass="class name"
android:alphabeticShortcut="string"
android:numericShortcut="string"
android:checkable=["true" | "false"]
android:visible=["true" | "false"]
android:enabled=["true" | "false"]
android:menuCategory=["container" | "system" | "secondary" | "alternative"]
android:orderInCategory="integer" />
<group android:id="@[+][package:]id/resource name"
android:checkableBehavior=["none" | "all" | "single"]
android:visible=["true" | "false"]
android:enabled=["true" | "false"]
android:menuCategory=["container" | "system" | "secondary" | "alternative"]
android:orderInCategory="integer" >
<item />
</group>
<item >
<menu>
<item />
</menu>
</item>
</menu>
标签及其属性:
<menu>
:不可缺省,必须作为菜单资源的根标签。应包含<item>
和/或 <group>
标签。
– xmlns:android
:不可缺省,XML文件的命名空间。必须是:"http://schemas.android.com/apk/res/android"
。
<item>
:一个菜单项。若包含了<menu>
标签,那么该<menu>
标签是一个子菜单。 <item>
标签必须被包含于<menu>
中。
– android:id
:资源ID。
– android:title
:String类型。菜单项的显示内容。
– android:titleCondensed
: String类型。缩短的菜单项的显示内容。当android:title
中指定的的内容显示不下时,显示该属性的内容。
– android:icon
:drawable资源。菜单项的图标。
– android:onClick
:方法名。当菜单项被点击时,调用该方法。必须在activity中定义该方法,且必须使用public修饰符,需要传入一个MenuItem
作为唯一参数。
– android:showAsAction
:下表中的Value值之一。用于确定如何在标题栏中显示该item项。
Value | Description |
---|---|
ifRoom | 仅当标题栏有空间时显示该item,否则该item项将被隐藏至overflow中 |
withText | 仅当标题栏有空间时会显示menu的title |
never | 永不在标题栏中显示该item,而是将该item项隐藏至overflow中 |
collapseActionView | 这个操作视窗应该被折叠到一个按钮中,当用户选择这个按钮时,这个操作视窗展开。否则,这个操作视窗在默认的情况下是可见的,并且即便在用于不适用的时候,也要占据操作栏的有效空间。 |
-- `android:actionLayout`:layout资源。定制的标题栏布局。
-- `android:actionViewClass`:类名。用于声明在标题栏展示的控件的全限定类名,如`"android.widget.SearchView"`表示将控件`SearchView`展示在标题栏上。
-- `android:actionProviderClass`:类名。用于声明在标题栏展示的菜单项的全限定类名,如`"android.widget.ShareActionProvider"`表示使用控件`ShareActionProvider`作为一个菜单项。
-- `android:alphabeticShortcut`:Char类型。为该item指定字符快捷键。
-- `android:numericShortcut`:Integer类型。为该item指定数字快捷键。
-- `android:checkable`:Boolean类型。`true`表示该item是可勾选的。
-- `android:checked`:Boolean类型。`true`表示item默认是勾选状态。
-- `android:visible`:Boolean类型。`true`表示item默认是可见状态。
-- `android:enabled`:Boolean类型。`true`表示item默认是使能状态。
-- `android:menuCategory`:值为下表中的Value值之一。这些值对应着Menu类中的` CATEGORY_* `字段。表示item的优先级。
Value | Description |
---|---|
container | 该项是容器的一部分(For items that are part of a container.) |
system | 该项由系统提供 |
secondary | 该项是由用户提供的二级选项(不常用) |
alternative | 该项正在显示 |
–android:orderInCategory
:Integer类型。该项的重要级别。
<group>
:定义一组item项。
– android:id
:资源ID。
–android:checkableBehavior
:值为下表中的Value值之一。指定该组item的可勾选行为。
Value | Description | |
---|---|---|
none | group中不包含可勾选的item。 | |
all | 所有item都是可勾选的。(checkbox) | |
single | 只能单选item。(radiobutton) |
-- `android:visible`:Boolean类型,true表示group可见。
-- `android:enabled`:Boolean类型,true表示group使能。
-- `android:menuCategory`:与`<item>`标签中的 `android:menuCategory`属性相同。
-- `android:orderInCategory`:Integer类型。该项的重要级别。
示例:
<!-- res/menu/example_menu.xml -->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/item1" android:title="@string/item1" android:icon="@drawable/group_item1_icon" android:showAsAction="ifRoom|withText"/>
<group android:id="@+id/group">
<item android:id="@+id/group_item1" android:onClick="onGroupItemClick" android:title="@string/group_item1" android:icon="@drawable/group_item1_icon" />
<item android:id="@+id/group_item2" android:onClick="onGroupItemClick" android:title="@string/group_item2" android:icon="@drawable/group_item2_icon" />
</group>
<item android:id="@+id/submenu" android:title="@string/submenu_title" android:showAsAction="ifRoom|withText" >
<menu>
<item android:id="@+id/submenu_item1" android:title="@string/submenu_item1" />
</menu>
</item>
</menu>
在Java代码中引入该menu资源:
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.example_menu, menu);
return true;
}
public void onGroupItemClick(MenuItem item) {
// One of the group items (using the onClick attribute) was clicked
// The item parameter passed here indicates which item it is
// All other menu item clicks are handled by onOptionsItemSelected()
}
Drawable是一种能够在屏幕上展示的资源,根据不同的展示形式,Drawable可分为如下类型:
Bitmap File
:一个位图文件资源,.png、.jpg 、或 .gif格式。对应BitmapDrawable
对象。
Nine-Patch File
:一种可以在指定方向上拉伸而不会失真的.9.png格式的图片资源。对应NinePatchDrawable
对象。
Layer List
:一个引用了一组Drawable图片的资源,具有层次顺序,最大标号的drawable在最顶层。对应LayerDrawable
对象。
State List
:不同状态下可饮用不同drawable资源的drawable。对应StateListDrawable
对象。
Level List
:管理大量的drawable,并会指定一个最大值。对应LevelListDrawable
对象。
Transition Drawable
:可以在两个drawable之间淡入淡出切换的drawable。对应TransitionDrawable
对象。
Inset Drawable
:在一个drawable中插入一个drawable并指定距离。当View的背景小于该View时,使用该类型的drawable。
Clip Drawable
:根据当前drawable尺寸剪切另一个drawable。对应ClipDrawable
对象。
Scale Drawable
:根据当前drawable尺寸缩放另一个drawable。对应ScaleDrawable
对象。
Shape Drawable
:设定颜色和渐变的drawable。对应ShapeDrawable
对象。
Android支持三种位图文件。.png (推荐), .jpg (可接受), .gif (不推荐)。
文件目录:
res/drawable/filename.png (.png, .jpg, or .gif)
引用方式:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
示例:
<!-- res/drawable/myimage.png -->
<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/myimage" />
在Java代码中引入:
Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.myimage);
一个XML位图文件定义在XML中,可以使用<bitmap>
标签将一个drawable包含在<item>
中。
文件目录:
res/drawable/filename.xml
引用方式:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
语法:
<?xml version="1.0" encoding="utf-8"?>
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@[package:]drawable/drawable_resource"
android:antialias=["true" | "false"]
android:dither=["true" | "false"]
android:filter=["true" | "false"]
android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
"fill_vertical" | "center_horizontal" | "fill_horizontal" |
"center" | "fill" | "clip_vertical" | "clip_horizontal"]
android:mipMap=["true" | "false"]
android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />
标签及其属性:
<bitmap>
:
– xmlns:android
:命名空间;
– android:src
:资源drawable。不可缺省。
– android:antialias
:Boolean类型。是否抗锯齿。
– android:dither
:Boolean类型。设置图像的像素是否与屏幕的像素相匹配。
– android:filter
:Boolean类型。是否开启图像过滤。
– android:gravity
:图像显示的位置。
– android:mipMap
:Boolean类型。用于开启图片的提示。
– android:tileMode
:拼装模式。可使用的值:disabled
(默认值,不拼装)、clamp
(若drawable有阴影,则重复其边缘颜色)、repeat
(在竖直和水平方向上重复阴影图片)、mirror
(以镜像的方式重复阴影)
示例:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/icon" android:tileMode="repeat" />
Nine-Patch是一个可拉伸的图片类型。其格式为.9.png。在普通图片的四周多出了1dp的宽度,其中,可以在左边和上边的1dp宽度中指定该图片可拉伸的范围,而右边和下边的1dp宽度用于指定图片中显示文字的位置。
文件目录:
res/drawable/filename.9.png
引用方式:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
示例:
<!-- res/drawable/myninepatch.9.png -->
<Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="@drawable/myninepatch" />
使用<layer-list>
标签包含若干个<item>
标签。每一个item表示一个层级的drawable。
文件目录:
res/drawable/filename.xml
引用方式:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
语法:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@[package:]drawable/drawable_resource" android:id="@[+][package:]id/resource_name" android:top="dimension" android:right="dimension" android:bottom="dimension" android:left="dimension" />
</layer-list>
标签及其属性:
<layer-list>
:不可缺省,用于包含若干<item>
标签。
– xmlns:android
:命名空间,不可缺省。
<item>
:用于设置每一个层级drawable。
– android:drawable
:drawable资源,不可缺省。
– android:id
:资源ID。
– android:top
:Integer类型。距离容器顶端的偏移量。
– android:right
:Integer类型。距离容器右端的偏移量。
– android:bottom
:Integer类型。距离容器底端的偏移量。
– android:left
:Integer类型。距离容器左端的偏移量。
示例:
<!-- res/drawable/layers.xml -->
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap android:src="@drawable/android_red" android:gravity="center" />
</item>
<item android:top="10dp" android:left="10dp">
<bitmap android:src="@drawable/android_green" android:gravity="center" />
</item>
<item android:top="20dp" android:left="20dp">
<bitmap android:src="@drawable/android_blue" android:gravity="center" />
</item>
</layer-list>
代码中引用:
<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/layers" />
State List drawable可以为控件设置不同状态下的drawable。如button有正在点击、未点击、获得焦点 等状态。
文件目录:
res/drawable/filename.xml
引用方式:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
语法:
<?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>
标签及其属性:
<selector>
:不可缺省。必须是根标签,包含若干个<item>
。
– xmlns:android
:命名空间
– android:constantSize
:Boolean
类型。若为true,表示当状态改变时,drawable的尺寸不变。默认为false。
– android:dither
:Boolean类型。默认为true。若为true,表示如果图片的像素类型与屏幕不符,则适配该屏幕类型。(如位图类型是ARGB 8888,而屏幕是RGB 565)。
– android:variablePadding
:Boolean类型。默认为false。若为true,表示当状态改变时,控件的padding值会改变。
<item>
:定义某个状态下的drawable资源。必须是<selector>
标签的子标签。
– android:drawable
:drawable资源。不可缺省。
– android:state_pressed
:Boolean类型。默认为false。为true时,表示该控件正在被点击。
– android:state_focused
:Boolean类型。默认为false。为true时表示该控件获得了焦点,即为可输入状态。
– android:state_hovered
: Boolean类型。光标是否悬停,通常与focused state相同。默认为false。
– android:state_selected
:Boolean类型。控件是否处于选中状态。
– android:state_checkable
:Boolean类型。true表示控件设为可选的。仅用于某个控件可以在可选的和非可选的之间切换。
– android:state_checked
:Boolean类型。true表示控件被勾选状态。
– android:state_enabled
:Boolean类型。控件是否可接受点击事件。
– android:state_activated
:Boolean类型。是否将该控件设为被点击标记状态。即点击后会永久变色,表示该控件被点击过。
– android:state_window_focused
:Boolean类型。true表示当该应用程序窗口处于前台时。
示例:
<!-- res/drawable/button.xml -->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/button_pressed" /> <!-- pressed -->
<item android:state_focused="true" android:drawable="@drawable/button_focused" /> <!-- focused -->
<item android:state_hovered="true" android:drawable="@drawable/button_focused" /> <!-- hovered -->
<item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>
在代码中引用:
<Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="@drawable/button" />
管理着若干个drawable的资源。
文件目录:
res/drawable/filename.xml
引用方式:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
语法:
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/drawable_resource" android:maxLevel="integer" android:minLevel="integer" />
</level-list>
标签及其属性:
<level-list>
:必须作为根标签。其中可包含若干个<item>
标签。
– xmlns:android
:命名空间
<item>
:该标签作为一个层级包含一个drawable。
– android:drawable
:drawable资源。不可缺省。
– android:maxLevel
:Integer类型。该item项的最大级别。
– android:minLevel
:Integer类型。该item项的最小级别。
示例:
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/status_off" android:maxLevel="0" />
<item android:drawable="@drawable/status_on" android:maxLevel="1" />
</level-list>
Transition Drawable 用于在两个drawable之间的切换产生淡入淡出效果。
文件目录:
res/drawable/filename.xml
引用位置:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@[package:]drawable/drawable_resource" android:id="@[+][package:]id/resource_name" android:top="dimension" android:right="dimension" android:bottom="dimension" android:left="dimension" />
</transition>
示例:
<!-- res/drawable/transition.xml -->
<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/on" />
<item android:drawable="@drawable/off" />
</transition>
引入控件:
<ImageButton android:id="@+id/button" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/transition" />
Java中引入:在500毫秒内将第一个drawable切换至第二个drawable
ImageButton button = (ImageButton) findViewById(R.id.button);
TransitionDrawable drawable = (TransitionDrawable) button.getDrawable();
drawable.startTransition(500);
语法:
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/drawable_resource" android:insetTop="dimension" android:insetRight="dimension" android:insetBottom="dimension" android:insetLeft="dimension" />
标签及其属性:
<inset>
:必须作为根标签。
– xmlns:android
:命名空间。
– android:drawable
:插入的drawable资源。不可缺省。
– android:insetRight
:Dimension类型。右部插入。
– android:insetTop
:Dimension类型。顶部插入。
– android:insetBottom
:Dimension类型。底部插入。
– android:insetLeft
:Dimension类型。右部插入。
示例:
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/background" android:insetTop="10dp" android:insetLeft="10dp" />
可以在XML中自定义一个普通性状的drawable。
文件目录:
res/drawable/filename.xml
引用方式:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
语法:
<?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="float" android:centerY="float" 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>
标签及其属性:
<shape>
:指定drawable形状。必须是根标签。
– xmlns:android
:命名空间。不可缺省。
– android:shape
:指定drawable形状。可选值为:"rectangle"
(缺省值,矩形)、"oval"
(椭圆)、"line"
(直线) 、"ring"
(圆环)
<corners>
:为drawable添加圆形边角。只有android:shape
属性设为"rectangle"
时,该标签及标签中的属性才有效。
– android:radius
:指定圆角半径。单位Dimension。
– android:topLeftRadius
:左上角半径
– android:topRightRadius
:右上角半径
– android:bottomLeftRadius
:左下角半径
– android:bottomRightRadius
:右下角半径
<gradient>
:渐变颜色
– android:angle
:Integer类型。渐变角度。0表示从左至右。90表示从下至上。45表示从左下至右上。默认为0。
– android:centerX
:Float类型。0.0-1.0。渐变中心的x的坐标。
– android:centerY
:Float类型。0.0-1.0。渐变中心的y的坐标。
– android:centerColor
:Color
类型。是一个16进制数。表示起始颜色与最终颜色的中间色。
– android:endColor
:Color
类型。最终色。
– android:startColor
:Color
类型。起始色。
– android:type
:渐变模式。可选值:"linear"
(线性渐变。缺省值)、"radial"
(放射式渐变)、"sweep"
(扫描渐变)
– ndroid:useLevel
:Boolean类型。若作用在LevelListDrawable
上则为true。
<padding>
:与父容器View的边距。
– android:left
:Dimension类型。左边距。
–android:right
:Dimension类型。右边距。
–android:top
:Dimension类型。上边距。
– android:bottom
:Dimension类型。下边距。
<size>
:drawable的尺寸。
– android:height
:Dimension类型。形状的高度。
– android:width
:Dimension类型。形状的宽度。
<solid>
:填充颜色。
– android:color
:Color类型。
<stroke>
:边框线。
– android:width
:Dimension类型。边框线宽度。
– android:color
:Color类型。边框线颜色。
– android:dashGap
:Dimension类型。边框线为虚线时两虚线的间隔。
– android:dashWidth
:Dimension类型。虚线的长度。
示例:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient android:startColor="#FFFF0000" android:endColor="#80FF00FF" android:angle="45"/>
<padding android:left="7dp" android:top="7dp" android:right="7dp" android:bottom="7dp" />
<corners android:radius="8dp" />
</shape>
引入控件:
<TextView android:background="@drawable/gradient_box" android:layout_height="wrap_content" android:layout_width="wrap_content" />
Java代码中引入:
Resources res = getResources();
Drawable shape = res. getDrawable(R.drawable.gradient_box);
TextView tv = (TextView)findViewByID(R.id.textview);
tv.setBackground(shape);