A. android开发中,怎么修改默认的布局格式
在layout文件夹下面的main.xml,把他修改就行,具体的有很多,这也说的不全面,这只是main的主布局。反正在这个layout文件夹下面的都是布局文件。还有其它的就要分开放了,比如进度条的布局就要放在drawable文件夹中了,看你是要改什么的布局了。
希望对你有所帮助,望采纳。
B. android设计界面时控件有多种排列方法,其中常用布局方式有
在android中我们常用的布局方式有这么几种:LinearLayout (线性布局),RelativeLayout (相对布局),TableLayout (表格布局),AbsoluteLayout (绝对布局),FrameLayout (帧布局)。LinearLayout 和 RelativeLayout 应该又是其中用的较多的两种。AbsoluteLayout 比较少用(我自己还没用过),因为它是按屏幕的绝对位置来布局的如果屏幕大小发生改变的话控件的位置也发生了改变。这个就相当于HTML中的绝对布局一样,一般不推荐使用。LinearLayout 顾名思义就是一条条的将控件布置下去,线性布局分为水平线性和垂直线性二者的属性分别为
android:orientation="horizontal" android:orientation="vertical" 。xmlns:android="http://schemas.android.com/apk/res/android" 很多人对这个感到困惑,其实它就是一个命名空间。RelativeLayout 相对布局。里面的每个控件之间的关系都是相对的。如果不设置相对关系的话默认摆放在屏幕左上角。重要属性如下:
android:layout_toRightOf="@id/city" :与id为city的控件的右边对齐。
android:layout_alignTop="@id/city" : 与id为city的控件的顶部对齐。
给出示意图如下所示:
android:layout_width="fill_parent" android:layout_height="wrap_content" 我一般在线性布局里面套相对布局,这时候需要注意上面两个属性相对布局的宽度可以设置为填充父控件,但是高度一般不要设置为填充父控件因为这样的话我想在相对布局外面在放控件就没有效果了因为屏幕已经被相对布局全部占据。
不管是用什么布局,宽度与高度这两个属性一定要弄清楚刚开始的时候我经常会发现有些控件没显示在界面上或者占据了整个屏幕,一检查原来是这里设置错了。还有不要忘记这两个属性在一般控件中都是不可或缺的,忘记设置的话就会报错。
C. android中常见的五种布局有什么特点
1,FrameLayout,特点:所有的View都会放在左上角,并且后添加进去的View会覆盖之前放进去的View。
2,LinearLayout,特点:在水平或者垂直方向上依次按照顺序来排列子元素,控件的排列顺序遵循其在布局文件中被写出的先后顺序。
3,RelativeLayout,特点:以某一个子元素为参照物,其余子元素均按照其相对位置来完成布局。
4,TableLayout,特点:每个TableLayout都是由一个或多个TableRow组成的,一个TableRow就代表TableLayout的一行。
5,AbsoluteLayout,表格布局类似Html里面的Table。每一个TableLayout里面有表格行TableRow,TableRow里面可以具体定义每一个元素,设定他的对齐方式 android:gravity="" 。
(3)android布局样式扩展阅读:
开放性:
在优势方面,Android平台首先就是其开放性,开发的平台允许任何移动终端厂商加入到Android联盟中来。显着的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。
开放性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。
丰富的硬件:
这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容,如同从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到iPhone上使用、联系人等资料更是可以方便地转移。
D. android一个页面可以有几种布局方法吗
Android界面五种常用布局方式
Android的界面由布局和组件协同完成,布局相当于整体框架,而组件则是框架里面的内容。组件按布局方式一次排列,就组成了用户所能看见的界面。Android的五大布局分别是LinearLayout(线性布局)、FrameLayout(单帧布局)、RelativeLayout(相对布局)、AbsoluteLayout(绝对布局)、TableLayout(表格布局)。
LinearLatout按照垂直或水平的顺序依次排列子元素,每一个子元素都位于前一个元素之后。如果是垂直排列,那么将是一个N行单列的结构,每行只会有一个元素,而不论这个元素的宽度是多少;如果是水平排列,那么将是一个单行N列的结构。如果搭建两行两列的结构,通常是先垂直排列两个元素,每个元素里再包含一个LinearLayout进行水平排列。
FrameLayout是五大布局中最简单的一种布局,在这个布局中,整个界面被当成一块备用的空白区域,所有的子元素都不能被指定放置的位置,它们统统放于这块区域的左上角,并且后面的元素直接覆盖在前面的子元素之上,将前面的子元素部分或全部遮挡。
AbsoluteLayout是绝对布局。在此布局中的子元素android:layout_x和android:layout_y属性将生效,用于描述该子元素的坐标位置。屏幕上左上角为坐标原点(0,0),第一个0代表横坐标,向右移动此值增大,第二个代表纵坐标,向下移动此值增大,在此布局中的子元素可以相互重叠。在四级开发中,通常不采用此布局方式,因为它的界面代码过于刚性,以至于不能很好的适配各种终端。
RelativeLayout按照各子元素之间的位置关系完成布局。在此布局中的子元素里与位置相关的属性将会生效。例如android:layout_below,android:layout_above等。子元素就通过这些属性和个自的ID配合指定位置关系。注意在指定位置关系时,引用的ID必须在引用前被定义,否则将出现异常。RelativeLayout是Android五大布局中较为灵活的一种布局方式,比较适合一些复杂的界面布局。
TableRow(表格布局)是LinearLayout的子类,它的Android:Layout_width和Layout_height属性恒为MATCH_PARENT和WRAP_CONTENT。所以它的子元素都是横向排列,并且宽高一致。这样的设计使得每个tablerow里的子元素都都相当于表格中的单元格一样。在TableRow中,单元格可以为空,但是不能跨列。
E. Android中常用的五种布局
Android
布局是应用界面开发的重要一环,在Android中,共有五种布局方式分别是:
线性布局:LinerLayout
表格布局:TableLayout
相对布局:RelativeLayout
绝对布局:AbsoluteLayout
帧布局:FrameLayout
F. Android布局优化的几种方式
1. include/merge
布局优化中常常用到include/merge标签,include的含义类似C代码中的include,意思是直接把指定布局片段包含进当前的布局文件。include适用于多个布局文件中存在相同的xml片段,比如说相同的标题栏、相同的广告栏、相同的进度栏等等。
2. ViewStub
在一个页面上根据不同条件展示不同的控件,我们常常会设置控件的可视属性,比如调用指定控件的setVisibility方法,若需展示则设置View.VISIBLE,若需隐藏则设置View.GONE。不过gone的控件只是看不到罢了,实际UI渲染时还是会被加载。要想事先不加载,在条件符合时才加载,就得用到标签ViewStub。
3. style样式
样式在res/values/styles.xml中定义,它适用于下面几种情况:
1、布局文件中存在多个具有相同风格的控件,比如说统一的文本框TextView,都是白底黑字、中号字体、居中显示,这时我们便可在styles.xml定义一种文本样式,然后在各文本框处声明它的style属性。好处一个是减少了布局文件的大小,另一个是方便以后统一修改风格。
2、某些控件在代码中声明时需要手工指定style,例如自定义对话框需要在构造函数中指定样式;另一个例子是弹窗PopupWindow在设置伸缩动画方法setAnimationStyle时需要指定动画样式。
3、定义页面的主题风格,然后应用到Activity页面。代码中设置主题可通过“setTheme(R.style.)”完成,布局中设置可在AndroidManifest.xml的activity节点下添加theme属性,如“android:theme=”@style/“”。
4. Theme主题
主题是一种特殊的样式,主题专用于页面,而样式一般运用于控件。主题定义一般放在themes.xml,样式定义一般放在styles.xml。
Android定义了一些系统主题,完整定义的参见sdk自带的themes.xml,常用的几种说明如下:
Theme.NoTitleBar : 不显示标题栏,即隐藏ActionBar
Theme.Light : 白色背景
Theme.Holo : 浅灰背景
Theme.Black : 黑色背景
Theme.Wallpaper : 壁纸
Theme.Translucent : 透明背景
Theme.Dialog : 对话框
Theme.Panel : 平板
Theme.InputMethod : 输入法
Theme.SearchBar : 搜索框
G. 安卓开发中怎么在布局中添加显得样式
使用TableLayout表格布局
表格布局模型以行列的形式管理子控件,每一行为一个TableRow的对象,当然也可以是一个View的对象。TableRow可以添加子控件,每添加一个为一列。
TableLayout属性:
android:collapseColumns:将TableLayout里面指定的列隐藏,若有多列需要隐藏,请用逗号将需要隐藏的列序号隔开。
android:stretchColumns:设置指定的列为可伸展的列,以填满剩下的多余空白空间,若有多列需要设置为可伸展,请用逗号将需要伸展的列序号隔开。
android:shrinkColumns:设置指定的列为可收缩的列。当可收缩的列太宽(内容过多)不会被挤出屏幕。当需要设置多列为可收缩时,将列序号用逗号隔开。
列元素(Button)属性:(奇怪的是button 里面没有android:layout_column 和android:layout_span两个属性,写进去无反应,还不知道为什么)
android:layout_colum:设置该控件在TableRow中指定的列。
android:layout_span:设置该控件所跨越的列数。
H. android常用的五种布局
常用五种布局方式,分别是:FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)。
LinearLayout里面又可分为垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal" )
I. android的ui布局有哪些
布局(Layout)的概念是针对Activity的,Activity就是布满整 个Android设备的窗口或者悬浮于其他窗口上的交互界面。在一个应用程序中通常由多个Activity构成,每个需要显示的Activity都需要在AndroidManifest.xml文件之中声明。
通常情况下,开发人员可以使用两种方式来创建UI组件,一种方式是使用XML方式来配置UI组件的相关属性,然后装载这些UI组件,这也是最常用的方式。但是有些特殊情况下,需要动态生成UI组件,则需要使用第二种方式,完全使用java代码来创建UI组件。
XML布局文件是Android系统中定义的Layout的常用方式,所有布局文件必须包含在res/layout目录中,且必须符合Java的命名 规范。当在res/layout目录下新增了布局文件之后,R.java文件会自动收录该布局资源,Java代码可通过setContentView方法 在Activity中显示该Layout。
setContentView(R.layout.<资源名称>);
在布局文件中可以指定UI组件的android:id属性,该属性的属性值代表该组件的唯一标识。通过Activity.findViewById()访问,并且findViewById()必须在setContentView加载xml文件之后使用,否则会抛出异常。
findViewById(R.id.)
Android应用的绝大部分UI组件都放在android.widget包及其子包、android.view包及其子包中,Android应用的 所有UI组件都继承了View类。View类还有一个重要的子类:ViewGroup,ViewGroup类是所有布局管理器的父类。
ViewGroup容器控制其子组件的分布依赖于ViewGroup.LayoutParams、ViewGroup.MarginLayoutParams两个内部类。
ViewGroup.LayoutParams提供两个XML属性设定组件的大小。
android:layout_height:指定该子组件的基本高度;
android:layout_width:指定该子组件的基本宽度。
这两个属性有三个基本值,这两个属性有三个特定的值:
fill_parent:指定组件的高度、宽度与父容器组件的一样。
match_parent:与fill_parent一样,Android2.2开始推荐使用。
warp_content:内容包裹。
ViewGroup.MarginLayoutParams用于控制子组件周围的页边距。
android:layout_marginBottom(下边距);
android:layout_marginLeft(左边距);
android:layout_marginRight(右边距):
layout_marginTop(上边距)
对于View的尺寸,android提供了三种单位供选择使用:
px:像素。
dp:dpi,表示屏幕实际的像素。
sp:与scale无关的像素,与dp类似。
尺寸单位选择的技巧:如果设置长度、高度等属性时可以使用dp或sp,但是如果设置字体,需要使用px。如果使用dp或sp,系统会根据屏幕密度的变化进行转换。
为了适应各种界面风格,Android提供了五种布局规范,利用这五种布局,基本上可以在设备上随心所欲的摆放任何UI组件,这五种布局分别是:
FrameLayout(帧布局)。
LinearLayout(线性布局)
RelativeLayout(相对布局)。
TableLayout(表格布局)。
AbsoluteLayout(绝对布局)。
线性布局(LinearLayout)
LinearLayout是最常用的布局方式,在XML文件中使用标记。它会将容器里的UI组件一个一个挨着排列起来。但是LinearLayout不会换行,当UI组件超出屏幕之后,则不会被显示出来。LinearLayout有两个重要的XML属性:androidgravity(对齐方 式);android:orientation(排列方式)。
android:orientation(排列方式),设定了LinearLayout中包含的UI组件的排列方式,有两个选项vertical(竖向)、horizontal(横向,默认值)
android:gravity(对齐方式),设定LinearLayout中包含UI组件的对齐方式,其选项很多,常用上(top)、下(bottom)、左(left)、右(right)。
J. android系统中有哪三种常用的ui设计方式
Android 资源类型
1.字符串资源
>>1.普通字符串
>>2.字符串数组
复制代码
<resources>
<string-array name="planets_array">
<item>aaa</item>
<item>bbb</item>
</string-array>
</resources>
复制代码
获取方式:getResources().getStringArray(R.array.planets_array)
>>3.复数字符串资源
某些自然语言中,不同的数字在使用方法上会有所不同,比如one book,two books。当数量大于1时,会使用不同的名词或其它复数形式;
复制代码
<resources>
<plurals name="numberOfp">
<item quantity="one">one person</item>
<item quantity="other">more persons</item>
</plurals>
</resources>
复制代码
quantity属性的值除了one和other外,还可以是zero,two,few,many;
引用复数字符串:
// 引用数字为1的复数字符串
getResources().getQuantityString(R.pluarlas.numberOfp,1);
// 引用数字为其它值的复数字符串
getResources().getQuantityString(R.pluarlas.numberOfp,10,10);
>>4.占位符格式化字符串
常用的格式化字符串三种方法:
>>1.在字符串中使用引号
字符串中的值虽然可以随意指定,但是当遇到特殊符号时(双引号,单引号)就需要采取特殊的方法来处理这些符号。
如果是单引号(')可以使用转义符(\)或用双引号(")将整个字符串括起来,如果是双引号,可以在双引号前使用转义符(\)。
<resources>
<string name="str1">"This'll work"</string> This'll work
<string name="str2">This\'ll work</string> This'll work
<string name="str3">\"apple\"</string> "apple"
</resources>
>>2.用占位符格式化字符串
使用String.format(String,Object...)方法可以格式化带占位符的字符串,只需要在字符串中插入占位符,就可以使用String.format方法格式化字符串资源,format方法要求的占位符用%1,%,...,%n,其实第n个占位符与format方法的n+1个参数值对应;
<resources>
<!-- $s表示该占位符被字符串替换,$d表示该占位符被整数替换 -->
<string name="str1">hello,%1$s!You have %2$d new message</string>
</resources>
String str1 =String.format(getResources().getString(R.string.str1), "ly", 17);
>>3.使用HTML标签格式化字符串资源
字符串资源支持一些HTML标签,因此可以直接在字符串资源中使用这些HTML标签格式化字符串
字符串资源支持如下的HTML标签
<b>粗体字
<i>斜体定
<u>带下划线的字
有时需要同时使用HTML标签和占位符格式化字符串,如果使用String.format方法格式化字符串,会忽略字符串中的所有HTML标签。为了使format方法可以格式化带
HTML标签的确字符,需要使用Html.formHTML方法处理字符串;
<resources>
<string name="hello_world">Welcome to <b>android</b></string>
<string name="str2">Hello,%1$s! You have <b> %2d new messages </b></string> <!--同时包含占位符和html标签的字符串-->
</resources>
由于需要使用Html.formHTML方法处理字符串,因此HTML标签中的 "<" 需要使用 "<" 表示 ">" 并不需要处理
获取字符串:
String text = String.format(getResources().getString(R.string.str2), "ly", 10);
CharSequence styledText = Html.fromHtml(text);
// 如果format的某个参数包含HTML的特殊字符,如"<","&",可以使用如下方式读取字符串的值;
String escapedUsername = TextUtils.htmlEncode("");
String text1 = String.format(getResources().getString(R.string.str2), "ly", 20);
2.Layout资源
1、如果根节点是View,除了<requestFocus>标签外,不能添加任何子标签,<requestFocus>可能被添加到布局文件的任何View中,表示该标签对应的控件在显示时处于焦点状态,整个布局文件只能有一个<requestFocus>标签
2、根节点是ViewGroup,常用的布局都是ViewGroup的子类
3、重用布局文件
如果想重用某个布局文件,可以使用<include>标签
<include layout="@layout/xx_layout" />
如果想让一个布局文件被另一个布局文件引用(使用<include>标签),可以使用<merge>作为被引用布局文件的根节点,由于<merge>并不会生成任何标签(在大量引用布局文件时不至于生成大量无用的标签),但是xml文件必须要有一个根节点,因此<merge>所起的作用就是作为xml文件的根节点,以使xml文件在编译时不至于出错,可以把<merge>当成<FrameLayout>使用;
3.图像资源
在图像资源中可以存储图像文件,还可以使用xml格式的图像资源来控件图像的状态和行为;
>>1.普通图像资源
Drawable da = getResources().getDrawable(R.drawable.xxx);
>>2.xml图像资源
xml图像资源其实就是在drawable目录中指定的xml文件,此种方式可以额外指定图像的某些属性,如图像拉动、排列方式;
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ic_launcher"
android:tileMode="repeat" >
</bitmap>
>>3.Nine-Patch图像资源
Nine-Patch图像资源文件必须以9.png作为文件扩展名,如abc.9.png
该图像资源的主要作用是:防止图像的某一部分被拉伸;确定将图像作为背景图的控件中内容显示的位置;
Android SDK本身提供了一个Draw 9-patch的工具,启动<sdk目录>\tools\draw9patch.bat命令启动该工具;
可以通过此工具在png图的四周绘制1个像素粗的直线,上边缘和左边缘的直线分别表示图像在水平和垂直方向可位值的范围。如果水平或垂直方向的某个区域不需要拉伸,则可不绘制相应的直线;右边缘和下边缘的直线分别表示图像所在控件中内容的显示范围,内容只在右边缘和下边缘绘制直线的区域显示,表示内容显示范围和拉伸范围的两给直线有一个重要区别就是表示内容显示范围的直线中间不能断开,而表示拉伸范围的直线中间可以断开;
Nine-Patch图像资源与普通图像资源引用方法相同,在引用时只写文件名,活力.9.png;
>>4.XML Nine-Patch图像资源
Nine-Patch图像资源也有与其对应的xml图像资源,使用<nine-patch>标签来引用Nine-Patch格式的图像,有一个设置抖动的android:dither属性;
>>5.图层资源
图层资源类似于<FrameLayout>不同的是<FrameLayout>标签中可以包含任意的控件,而图层资源每一层都只有是图像,定义图层资源必须使用<layer-list>作为资源文件的根节点,<layer-list>标签中包含多个<item>标签,每一个标签表示一个图像,最后一个<item>标签显示在最顶层;
默认情况下,图像会尽量充满显示图像的范围,图像可能会有拉伸,为了避免图像拉伸,可以在<item>标签中使用<bitmap>标签引用图像;
复制代码
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:bottom="10dip" 底端偏移的像素
android:left="10dip" 左侧偏移的像素
android:right="10dip" ...
android:top="10dip"> ...
<bitmap
android:gravity="center"
android:src="@drawable/hell" />
</item>
</layer-list>
复制代码
某些情况下,可以使用图层来代替<FrameLayout>
>>6.图像状态资源,处理控件不同状态下的显示状态
复制代码
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/bm" android:state_focused="true"></item>
<item android:drawable="@drawable/bm" android:state_pressed="true"></item>
<item android:drawable="@drawable/bm"></item>
</selector>
// android:state_focused/pressed设置为true表示当前item的drawable属性为获取焦点和按下时的drawable样式
复制代码
>>7.图像级别(Level)资源
图像资源状态只能指定几种有限的状态,可以通过图像级别指定更多的状态;图像级别是一个整数的区间,可以通过ImageView.setImageLevel或Drawable.setLevel方法切换不同状态的图像;图像级别资源是xml文件,必须以<level-list>为根节点,每一个item表示一个级别区间,下面是一个xml文件;通过ImageView.setImageLevel(level),根据level所在的区间设定显示的图像资源,如果level不在任一区间内则清空ImageView当前图像;
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:maxLevel="2" android:minLevel="0" android:drawable="@drawable/hell" />
<item android:maxLevel="4" android:minLevel="3" android:drawable="@drawable/hell" />
</level-list>
>>8.淡入淡出(Cross-fade)资源
也是切换两个图像(不支持多于两个图像的切换),并且使这两个图像以淡入淡出效果进行切换,如电灯在开关时逐渐变亮或逐渐变暗;
<transition xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/hell"/>
<item android:drawable="@drawable/hell"/>
</transition>
TransitionDrawable da = ...;
// 从第一张图片切换到第二张图片,时间效果为1秒
da.startTransition(1000);
// 从第二张图片切换到第一张图片,时间效果为1秒
da.reverseTransition(1000);
>>9.嵌入(insert)图像资源
使用场景:要显示的图像要求要小于装载图像的View(图小于View区域),也是通过xml资源定义,只有一个节点inset。
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/hell"
android:insetLeft="10dip" > <!--图像距离左边的距离,延伸-->上/下/右的距离-->
</inset>
>>10.剪切(Clip)图像资源,使用剪切图像资源可以只显示图像的一部分,如可以通过此来制作进度条;
<clip xmlns:android="http://schemas.android.com/apk/res/android"
android:clipOrientation="horizontal" // 指定截取的方向
android:drawable="@drawable/hell" // 指定要截取的图像
android:gravity="left" > // 指定截取的方式,在此为从左侧开始截取
</clip>
ClipDrawable cd = ...;
cd.setLevel(1000);
上面ClipDrawable.setLevel(level)设置截取的图像宽度,ClipDrawable预设了最大值10000(表示不进行截取),最小值为0(表示不显示);
>>11. 比例(Scale)图像资源
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/hell"
android:scaleGravity="center" // 设置图像显示的位置
android:scaleHeight="70%" // 设置图像显示的高度
android:scaleWidth="80%" > // 设置图像显示的宽度
</scale>
>>12.形状资源
复制代码
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" > shape可以指定就矩形,oval(椭圆),line(直线),ring(圆)
<corners> 定义圆角
</corners>
<gradient
android:angle="45"
android:startColor="#000000"
android:endColor="#FFFFFF" > 定义颜色渐变,从左下角到或上角
</gradient>
<padding> 定义控件内容到边框的距离
</padding>
<stroke> 定义边线
</stroke>
<solid> 定义填充
</solid>
<size> 定义大小
</size>
</shape>
复制代码
13.菜单资源
菜单不仅可以在onCreateContextMenu或onCreateOptionsMenu方法中通过代码创建,还可以在res/menu目录中建立相应的菜单资源文件,并在上面两个方法中加载菜单资源;
菜单资源文件必须以<menu>标签作为根节点,每一个菜单项用一个<item>表示,如果要定义子菜单,可以在<item>标签中包含<menu>标签;如果想将多个菜单项划为一组,可以使用<group>包含多个<item>标签;
复制代码
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
复制代码
查看MenuInflater.inflate(int,Menu)
复制代码
/**
* Inflate a menu hierarchy from the specified XML resource.
*
* @param menuRes Resource ID for an XML layout resource to load (e.g., <code>R.menu.main_activity</code>)
* @param menu The Menu to inflate into. The items and submenus will be added to this Menu.
*/
public void inflate(int menuRes, Menu menu) {
XmlResourceParser parser = null;
try {
parser = mContext.getResources().getLayout(menuRes);
AttributeSet attrs = Xml.asAttributeSet(parser);
parseMenu(parser, attrs, menu);
} catch ...finally {
if (parser != null) parser.close();
}
}
复制代码
14.样式与主题(style/theme)
>>1.样式style
android中样式和css中样式作用是一样的,都是用于为界面元素定义显示风格,它是一个包含一个或者多个控件属性的集合。
定义样式需要在res/values/styles.xml中进行定义,如下是一个样式的定义:
<style name="textViewStyle">
<item name="android:textSize">22sp</item>
<item name="android:textColor">#FF0000</item>
</style>
<style name="textViewStyle1" parent="textViewStyle"></style><!-- 此样式继承自textViewStyle -->
<style name="textViewStyle.Livingstone"><!-- 样式继承的另一种写法,但不可用此写法继承Android自带的定义样式? -->
<item name="android:textColor">#00FF00</item>
</style>
所有定义的样式都会在R文件中自动生成一个资源ID,加一个点表示样式继承会生成上图所示的资源id;
样式的引用:
<TextView
style="@style/textViewStyle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="hello" />
>>2.主题Theme
主题应用于整个应用或者activity,样式应用于具体的控件上。主题的应用与样式定义一样,不同的是主题还可以设置窗口的显示风格;主题的引用需要在清单文件中进行引用,如引用到整个应用之上就需要在Application节点中进行配置引用,而引用到单个Activity只需要在此Activity中进行配置引用;
复制代码
<style name="Livingstonetheme"><!--此定义是一个无Title的主题-->
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">?android:windowNoTitle</item>
<!-- 问号表示引用此主题中android:windowNoTitle属性的值 -->
<item name="android:textSize">18sp</item>
</style>
复制代码
android系统定义了一些属性,如android:theme="@android:style/Theme.Dialog",该主题可以让Activity看起来像一个对话框,更多主题可以在文档reference->android->R.style中查看。当主题里面的样式属性值与样式里面的属性值发生冲突的时候会显示样式里面的值;
15.其它资源
在资源文件中还可以包括尺寸(dimen)、整数(integer)、布尔(bool) 、整形数组资源(integer-array)、资源数组(array)、颜色(color)
TypedArray ta = getResources().obtainTypedArray(int id); // 获取数组资源,包括integer-array、array
Final总结:
除了res/values目录中的资源名,其它目录的资源都会以文件名在R类的相应子类中生成变量;而res/values中的资源会以name属性值为变量名在R类的相应子类中生成变量;