android布局
- 格式:doc
- 大小:199.00 KB
- 文档页数:8
Android组件---四⼤布局的属性详解【声明】欢迎转载,但请保留⽂章原始出处→_→Android常见布局有下⾯⼏种:LinearLayout:线性布局。
所有的控件都是串在⼀条线上的。
RelativeLayout:相对布局。
所有的控件的位置,都是相对于⽗控件的。
FrameLayout:帧布局。
FrameLayout布局中的控件都是⼀层⼀层的。
帧布局每次添加的控件都显⽰在最上⾯,最后显⽰在界⾯上的是最后添加的⼀个控件。
TableLayout:表格布局。
表格布局可以实现的.⼀般可以使⽤线性布局实现。
AbsoluteLayout:绝对布局。
已经是废弃的状态,很少⽤了。
orientation:属性是指定线性布局的排列⽅向。
horizontal ⽔平。
线性布局默认的朝向是⽔平的。
vertical 垂直例如:android:orientation="vertical"gravity:指定当前控件⾥⾯的内容容显⽰位置。
(四⼤layout中均可使⽤)left 左边right 右边top 上边bottom 底边例如:android:gravity="center"gravity中的属性可以组合使⽤。
例如:android:gravity="bottom|right"layout_gravity:指定当前控件在⽗元素的位置。
(只在 LinearLayout 和 FrameLayout 中有效)left 左边right 右边top 上边bottom 底边centercenter_horizontalcenter_vertical例如:android:layout_gravity="center"另外,需要提⽰的是,对于 LinearLayout :当 android:orientation="vertical" 时,只有⽔平⽅向的设置才起作⽤,垂直⽅向的设置不起作⽤。
Android布局属性大全布局:AbsoluteLayout(绝对布局):xmlns:android="/apk/res/android"style="@..."android:clipChildren="true|false"android:clipToPadding="true|false"android:layoutAnimation="@---"android:animationCache="true|false"android:persistentDrawingCache="none|animation|scrolling|all":持续高速缓存绘图android:alwaysDrawnWithCache="true|false"android:andStatesFromChildre="true|false"android:descendantFocusability="beforeDescendants|afterDescendants|bl ocksDescendants":后裔可聚焦android:id="@+id/absoluteLayout"android:tag="@---"android:android:scrollX="---"android:android:scrollY="---"android:background="@---"android:padding="----"android:paddingLeft="----"android:paddingTop="----"android:paddingRight="----"android:paddingBotton="---"android:focusable="true|false"android:focusableInTouchMode="true|false"android:visibility="visible|invisible|gone"android:fitsSystemWindows="true|false":适合系统窗口android:scrollbars="none|horizontal|vertical"android:scrollbarStyle="insideOverlay(内覆盖)|insideInset(内插图)|outsideOverlay(外覆盖)|outsideInset(外插图)"android:isScrollContainer="true|false":是一个滚动集合android:fadeScrollbars="true|false":褪色的滚动条android:scrollbarFadeDuration="---":卷轴淡出android:scrollDefaultDelayBeforeFade="---":滚动前默认延迟android:scrollbarSize="---"android:scrollbarThumbHorizontal="@----":拇指水平滚动条android:scrollbarThumbVertical="@----":拇指垂直滚动条android:scrollbarTrackVertical="@---":垂直滚动条轨道android:scrollbarTrackHorizontal="@---":水平滚动条轨道android:scrollbarAlwaysDrawHorizontalTrack="true|false":水平滚动条总是吸引轨道android:scrollbarAlwaysDrawVerticalTrack="true|false":垂直滚动条总是吸引轨道android:fadingEdge="none|horizontal|vertical":衰落的边缘android:fadingEdgeLength="---":边长衰落android:nextFocusLeft="----":下左焦点android:nextFocusUp="---":下一个重点注册android:nextFocusRight="---":正确的下一个重点android:nextFocusDown="---":下一个焦点下移android:clickable="true|false":点击android:longClickable="true|false"android:saveEnabled="true|false":启用保存android:drawingCacheQuality="auto|low|hight":绘图缓存质量android:keepScreenOn="true|false":保持屏幕android:duplicateParentState="true|false":重复父状态android:minHeight="---":android:minWidth="----":android:soundEffectEnabled="true|false":音效启用android:hapticFeedbackEnable="true|false":触觉反馈启用android:contentDescription="@---":内容概述android:onClick="@---":android:layout_gravity="top|bottom|right|left|center_vertical|center_ horizontal|fill_vertical|fill_horizontal|center|fill|clip_vertical|cl ip_horizontal":重力android:layout_width="fill_parent|match_parent|wrap_content" android:Llayout_height="fill_parent|match)parent_wrap_content" android:layout_margin="":android:layout_marginLeft=""android:layout_marginTop=""android:layout_marginRight=""android:layout_marginBottom=""DialerFilter(拨号器过滤器):ExpandableListView(可扩展的列表视图):FrameLayout(针布局):GridView(网格视图):HorizontalScrollView(水平滚动查看):ImageSwither(图像切换):LinearLayout(线性布局):ListView(列表视图):MediaController(媒体控制器):RadioGroup(单选按钮组):RelativeLayout(相对布局):ScrollView(滚动查看):SlidingDrawer(滑动抽屉):TabHost(标签主机):TabWidget(标签控件):TableLayout(表格布局):TableRow(表行):TextSwitcher(文字切换):ViewAnimator(查看动画):ViewFlipper(参看弗利珀):ViewSwitcher(查看切换):--------------------------------------------------- GestureOverlayView(手势覆盖查看):SurfaceView(表现观):View(参看):ViewStub(查看存根):WebView(WEB视图):AnalogClock(模拟时钟):AutoCompleteTextView(自动完成文本视图):Button(按钮):CheckBox(复选框):CheckedTextView(检查的文字查看):Chronometer(时计):DatePicker(日期选择器):DigitalClock(数字时钟):EditText(编辑文字):Gallery(画廊):ImageButton(图像按钮):ImageView(图像查看):MultiAutoCompleteTextView(多自动完成文本查看): ProgressBar(进度):QuickContactBadge(快速联系徽章):Radio Button(单选按钮):RatingBar(评分酒吧):SeekBar(搜索栏:即拖拉进度条):Spinner(微调):TextView(文本视图):TimePicker(时间选择器):ToggleButton(切换按钮):TwoLineListItem(两线列表项):VideoView(视频查看):ZoomButton(变焦按钮):ZoomControls(缩放控制):Include(包括):-------------------------------<merge></merge>(合并):xmlns:android="/apk/res/android"android:layout_gravity="top|bottom|left|right|center_vertical|fill_ve rtical|center_horizontal|fill_horizontal|center|fill|clip_vertical|cl ip_horizontal"android:layout_width="fill_parent|match_parent|wrap_content" android:layout_height="fill_parent|match_parent|wrap_content" android:layout_margin=""android:layout_marginLef=""android:layout_marginTop=""android:layout_marginRight=""android:layout_marginBottom=""第一类:属性值为true或falseandroid:layout_centerHrizontal 水平居中android:layout_centerVertical 垂直居中android:layout_centerInparent 相对于父元素完全居中android:layout_alignParentBottom 贴紧父元素的下边缘android:layout_alignParentLeft 贴紧父元素的左边缘android:layout_alignParentRight 贴紧父元素的右边缘android:layout_alignParentTop 贴紧父元素的上边缘android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物第二类:属性值必须为id的引用名“@id/id-name”android:layout_below 在某元素的下方android:layout_above 在某元素的的上方android:layout_toLeftOf 在某元素的左边android:layout_toRightOf 在某元素的右边android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐第三类:属性值为具体的像素值,如30dip,40pxandroid:layout_marginBottom 离某元素底边缘的距离android:layout_marginLeft 离某元素左边缘的距离android:layout_marginRight 离某元素右边缘的距离android:layout_marginTop 离某元素上边缘的距离EditText的android:hint 设置EditText为空时输入框内的提示信息。
安卓之布局总结Adroid布局有⼈形象地⽐喻,Android开发中的布局就相当于⼀栋建筑的外观架构。
布局⽤得好,这栋建筑的外观才美观⾼⼤上。
Android布局管理器Android布局管理器本⾝是⼀个界⾯控件,所有的布局管理器都是ViewGroup类的⼦类,都是可以当做容器类来使⽤的。
因此⼀个布局管理器中可以嵌套其他的布局管理器。
这是⾕歌上找的⼀张布局管理器层级图每⼀个ViewGroup都可以嵌套其他的ViewGroup和View(视图)。
⼀个ViewGroup的⼤⼩是相对的,它即可以是其他ViewGroup的⽗容器,也可以是其他ViewGroup的⼦容器。
在Android中,ViewGroup指代的是布局管理器,也就是下⾯要讲的布局样式,View指代的是布局管理器中的⼀个个控件。
在Android中,控件可以在XML⽂件中定义,也可以程序员根据⾃⼰的需要去定义⼀个类。
本⽂重点先不讨论视图中的控件,还是回归到布局。
Android六⼤基本布局管理器分别是:线性布局(LinearLayout)、表格布局(TableLayout)、⽹格布局(GridLayout)、相对布局(RelativeLayout)、绝对布局(AbsoluteLayout)、层布局(FrameLayout)其中,表格布局是线性布局的⼦类。
⽹格布局是android 4.0后新增的布局。
(1)线性布局线性布局会将容器内的所有控件⼀个挨着⼀个地排列。
属性:1. 排列⽅向android:orienation = “ horizontal/vertical”⽔平排列和垂直排列,Android中默认为垂直排列vertical注意:默认情况下⽔平和垂直⽅向的排列只占⼀⾏,如果⽤android:layout_width来设定控件的宽度,如果控件宽度太⼤,超出屏幕的显⽰范围,屏幕是不会显⽰超出的范围的。
2. 对齐⽅式⽤于控制元素(例如⽂字)在该控件⾥的显⽰位置。
android线性布局示例LinearLayout是android中常见的布局形式。
可垂直或者水平平分或者根据权重分配空间,罗列视图小窗口组件。
也就是说,如果垂直线性布局的话,一行只能布局一个窗口部件,水平则相应的只有一行,在该行内显示各个窗口部件,不会折行。
使用线性布局,可以实现类似下面图示的界面。
参见:/guide/topics/ui/layout-objects.html对示例和布局有详细的描述。
这里根据上面图,写了一个例子。
主要展示了以下技术要点:∙Activity的跳转,可通过实现android activity之间的跳转帮助理解,这里示例利用到Activity跳转,导航到具体示例Activity上;∙线性布局的属性,android:layout_height和android:layout_width,可以产生不同的效果。
这是第一种线性布局效果:可以看到文本框是单行的,评论的文本框没有占据屏幕剩余部分。
代码见:/svn/tags/yout.demo_1.0/第二个示例,效果:评论文本框占据余下的屏幕部分。
主要是linear.demo.xml文件中的layout_width属性做了修改,其他文件没有变化。
代码见:/svn/tags/yout.demo_1.1官方网站上有一个对权重的示例。
见:/resources/tutorials/views/hello-linearla yout.html效果类似这样:可以通过修改布局文件中的android:layout_weight属性,让色条改变分配比例。
权重值越高,所占比例越大。
见布局文件片段:<LinearLayout android:orientation="horizontal"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_weight="1"><TextView android:text="red" android:gravity="center_horizontal" android:background="#aa0000" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="3" /><TextView android:text="green" android:gravity="center_horizontal" android:background="#00aa00" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" /><TextView android:text="blue" android:gravity="center_horizontal" android:background="#0000aa" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="2" /><TextView android:text="yellow" android:gravity="center_horizontal" android:background="#aaaa00" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" />。
Android开发⾃学笔记(AndroidStudio)—4.1布局组件⼀、引⾔Android的界⾯是有布局和组件协同完成的,布局好⽐是建筑⾥的框架,⽽组件则相当于建筑⾥的砖⽡。
组件按照布局的要求依次排列,就组成了⽤户所看见的界⾯。
在Android4.0之前,我们通常说Android开发五⼤布局和四⼤组件,这五⼤布局就是:1. LinearLayout 线性布局2. FrameLayout 单帧布局,也有中⽂翻译为帧布局、框架布局。
3. RelativeLayout 相对布局4. AbsoluteLayout 绝对布局5. TableLayout 表格布局⽽在Android4.0之后⼜新增了⼀种GridLayout⽹格布局。
⼆、LinearLayout线性布局线性布局是Android开发中最常见的⼀种布局⽅式,它是按照垂直或者⽔平⽅向来布局,通过“android:orientation”属性可以设置线性布局的⽅向。
属性值有垂直(vertical)和⽔平(horizontal)两种。
线性布局的排列在某⾏或者某列并不会⾃动换⾏或换列,就是说如果采⽤⽔平布局,控件宽度超过屏幕显⽰的话,后⾯的控件都将被隐藏,不会⾃动换⾏。
常⽤的属性有:1. android:orientation:可以设置布局的⽅向2. android:id - 为控件指定相应的ID3. android:text - 指定控件当中显⽰的⽂字,需要注意的是,这⾥尽量使⽤string.xml4. android:gravity - 指定控件的基本位置,⽐如说居中,居右等位置5. android:textSize - 指定控件当中字体的⼤⼩6. android:background - 指定控件所⽤的背景⾊,RGB命名法7. android:layout_width - 指定控件的宽度8. android:layout_height - 指定控件的⾼度9. android:layout_weight - 指定控件的占⽤⽐例10. android:padding - 指定控件的内边距,也就是说控件当中的内容11. android:sigleLine - 如果设置为真的话,则将控件的内容显⽰在⼀⾏当中layout_weight属性以控制各个控件在布局中的相对⼤⼩。
实战Android编程——手把手教你做出商用软件34第3章Android布局管理器本章要介绍的内容为Android平台下的布局管理器。
Android中的布局包括线性布局、表格布局、相对布局、帧布局和绝对布局。
下面将分别对每个布局管理器进行详细的介绍。
3.1 控件类概述3.1.1 View类简介在介绍Android的布局管理器之前,有必要让读者了解Android平台下的控件类。
首先要了解的是View类,该类为所有可视化控件的基类,主要提供了控件绘制和事件处理的方法。
创建用户界面所使用的控件都继承自View,如TextView、Button、CheckBox等。
关于View及其子类的相关属性,既可以在布局XML文件中进行设置,也可以通过成员方法在代码中动态设置。
View类常用的属性及其对应方法如表3-1所示。
表3-1 View类常用属性及对应方法说明属性名称对应方法描述android:background setBackgroundResource(int) 设置背景android:clickable setClickable(boolean) 设置View是否响应点击事件android:visibility setVisibility(int) 控制View的可见性android:focusable setFocusable(boolean) 控制View是否可以获取焦点android:id setId(int) 为View设置标识符,可通过findViewById方法获取android:longClickable setLongClickable(boolean) 设置View是否响应长点击事件android:soundEffectsEnabled setSoundEffectsEnabled(boolean) 设置当View触发点击等事件时是否播放音效android:saveEnabled setSaveEnabled(boolean) 如果未作设置,当View被冻结时将不会保存其状态android:nextFocusDown setNextFocusDownId(int)定义当向下搜索时应该获取焦点的View,如果该View 不存在或不可见,则会抛出RuntimeException异常android:nextFocusLeft setNextFocusLeftId(int) 定义当向左搜索时应该获取焦点的Viewandroid:nextFocusRight setNextFocusRightId(int) 定义当向右搜索时应该获取焦点的View续表属性名称对应方法描述android:nextFocusUp setNextFocusUpId(int) 定义当向上搜索时应该获取焦点的View,如果该View第3章 Android 布局管理器35不存在或不可见,则会抛出RuntimeException 异常说明:任何继承自View 的子类都将拥有View 类的以上属性及对应方法。
Android五⼤布局详解——TableLayout(表格布局)TableLayout前⾯所学的LinearLayout和RelativeLayout两⼤布局已经完全适⽤于各种开发条件下,其他的布局仅供参考学习,毕竟知识就是⼒量,以后的开发过程中万⼀遇到也能游刃有余。
表格布局允许我们使⽤表格的⽅式来排列组件,就是⾏与列的⽅式。
简单描述1.直接往TableLayout中添加组件,这个组件占满⼀⾏。
<?xml version="1.0" encoding="utf-8"?><TableLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="TableLayout"/></TableLayout>效果如图:2.如果想要⼀⾏上有多个组件,就要添加⼀个TableRow的容器。
<?xml version="1.0" encoding="utf-8"?><TableLayout xmlns:android="/apk/res/android" android:layout_width="match_parent"android:layout_height="match_parent"><TableRow><Buttonandroid:id="@+id/button_1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="1"/><Buttonandroid:id="@+id/button_2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="2"/><Buttonandroid:id="@+id/button_3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="3"/><Buttonandroid:id="@+id/button_4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="4"/></TableRow></TableLayout>效果如图:3.tablerow中的组件个数就决定了该⾏有多少列。
Android布局是应用界面开发的重要一环,在Android中,共有五种布局方式,分别是:LinearLayout (线性布局),FrameLayout(框架布局),AboluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)。
在window下有预览功能,可以在某ml中查看布局的样式,在linu某中无。
一、LinearLayout线性布局,这个东西,从外框上可以理解为一个div,他首先是一个一个从上往下罗列在屏幕上。
每一个LinearLayout里面又可分为垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal" )。
当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;水平布局时,只有一行,每一个元素依次向右排列。
linearLayout中有一个重要的属性 android:layout_weight="1",这个weight在垂直布局时,代表行距;水平的时候代表列宽;weight值越大就越大。
线形布局中预览和真机中完全一样。
Te某tView占一定的空间,没有赋值也有一定的宽高,要特别注意。
二、FrameLayoutFrameLayout是最简单的一个布局对象。
它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象—比如,一张你要发布的图片。
所有的子元素将会固定在屏幕的左上角;你不能为FrameLayout中的一个子元素指定一个位置。
后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡住(除非后一个子元素是透明的)。
三、AboluteLayoutAboluteLayout 这个布局方式很简单,主要属性就两个 layout_某和 layout_y 分别定义这个组件的绝对位置。
安卓线性布局的概念安卓线性布局是一种用于安卓应用程序界面设计的布局方式。
在安卓开发中,布局是设计界面的重要部分,能够决定应用程序的用户体验和界面美观度。
线性布局是其中一种常用的布局方式,它允许将控件按照水平或垂直方向排列,以创建灵活的、简洁的界面。
线性布局的概念和特点线性布局是一种容器布局,通过设置一系列规则和属性来确定子控件的位置和大小。
它以线性的方式布置子控件,可以按照水平或垂直方向进行排列。
线性布局的特点包括:1. 线性布局是按照子控件在布局中的添加顺序进行排列的,先添加的控件会显示在先添加的位置上。
2. 线性布局可以指定子控件在其中的布局权重,通过设置权重可以平均分配剩余空间或者根据比例分配。
3. 子控件可以根据需要进行填充,可以按比例进行拉伸或者按比例收缩。
4. 线性布局支持嵌套,也就是说可以在一个线性布局中再添加一个线性布局,从而实现更复杂的布局需求。
线性布局的使用方法在安卓开发中,线性布局通常是通过XML布局文件进行设置和使用的。
首先,在XML文件中创建线性布局容器,使用LinearLayout标签表示。
然后,在线性布局中添加各个子视图,可以是其他布局容器或者具体的组件控件。
可以通过设置布局容器的属性来确定线性布局的方向、对齐方式、布局权重等。
具体步骤如下:1. 创建一个新的XML布局文件,命名为layout_linear.xml。
2. 在布局文件中添加LinearLayout标签,指定布局的方向、对齐方式和布局权重等属性。
示例代码如下:xml<LinearLayoutxmlns:android="android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:gravity="center"android:weightSum="3"><! 添加子控件></LinearLayout>在这个示例中,LinearLayout的属性包括:- android:layout_width和android:layout_height指定布局的宽度和高度为match_parent,即填充满父容器。
Android系统常用布局介绍Android中的布局包括线性布局,表格布局,相对布局,帧布局,绝对布局。
下面分别对每个布局进行一个介绍。
在介绍android的布局管理器之前,有必要了解android平台下的控件类。
首先要了解的是View类,该类为所有可视化控件的基类,主要提供了控件绘制和事件处理的方法。
创建用户界面所使用的控件都继承自View,如TextView,Button,CheckBox等。
补充:另外一个需要了解的是ViewGroup类,它也是View类的子类,但是可以充当其他控件的容器。
ViewGroup的子控件既可以是普通的View,也可以是ViewGroup。
Android中的一些高级控件如Gally,GirdView等都继承自ViewGroup。
一:线性布局:LinearLayout类简介线性布局是最简单的布局之一,它提供了控件水平或者垂直排列的模型。
同时,使用此布局时可以通过设置控件的weight参数控制各个控件在容器中的相对大小。
LinearLayout布局的属性既可以在布局文件(XML)中设置,也可以通过成员方法进行设置。
案例:1.在布局管理器中实现布局:在eclipse中新建一个项目。
首先打开项目文件夹下res/values目录下的string.xml,写入一下内容:<?xml version=”1.0”encoding=”utf-8”?><resources><string name=”app_name”>LinearExample</string><string name=”button”>按钮</string><string name=”add”>添加</string></resources>说明:在string.xml中主要声明了程序中要用到的字符串资源,这样将所有字符串资源统一管理有助于提高程序的可读性及可维护性。
一、解答题应用程序的4大组件是什么Activity、Broadcast Receiver、Content Provider、Service2.请介绍下Android中常用的五种布局。
相对布局(RelativeLayout):相对布局中可以设置某一个视图相对于其他视图的位置,包括上、下、左、右。
线性布局(LinearLayout):线性布局可分为水平线性布局和垂直线性布局。
水平线性布局所有在这个布局中的视图都沿着水平方向线性排列。
垂直线性布局则沿着垂直方向线性排列。
框架布局(FrameLayout):所有添加到框架布局中的视图都是以层叠的方式显示,这种显示方式类似堆栈。
表格布局(TableLayout):表格布局可以将视图按行、按列进行排列。
绝对布局(AbsoluteLayout):可以任意设置视图定位位置。
3. activity一般会重载7个方法用来维护其生命周期,除了onCreate(),onStart(),onDestory() 外还有onrestart,onresume,onpause,onstop4. 当启动一个Activity并且新的Activity执行完后需要返回到启动它的Activity来执行的回调函数是startActivityResult()5.什么是IntentIntent(意图)主要是解决Android应用的各项组件之间的通讯。
Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。
启动Activity方式:显式启动,必须在Intent中指明启动的Activity所在的类Intent intent = new Intent, ;startActivity(intent);6.Broadcast有哪几种区别实现广播的方法有两种。
一种是在当中去注册广播,另一种方法是在代码中动态注册广播,这两种方法虽然都能实现广播机制,但是还是有很大不同,所以运用也要分情况。
一、概述Android的控件体系分为三个类别:1、基本控件2、布局3、容器这三类控件主要分布在两个包中:1、android.view 提供抽象接口2、android.widget 提供系统内置的大部分控件整个系统得控件都继承自android.view.View ,而布局及容器类继承自android.view.ViewGroup。
基本控件主要包括ImageView、ProgressBar、SurfaceView、TextView、EditText等。
布局虽然布局跟容器均继承自android.view.ViewGroup,但并不像SWT那样提供了面板+布局的结构,而是每种Layout就是一中特殊的面板,包括AbsoluteLayout、FrameLayout、LinearLayout、TableLayout、RelativeLayout等。
容器这里的容器是指采用了特定的布局并且提供了行为的控件,包含ListView、GridView、Gallery、Spinner等。
二、android常用控件android常用控件之TextView、EditView、Button、Menu示例:一个计算应用程序,输入2个数字,点击按钮进行计算两个数的积并且返回结果。
当点击模拟器右侧的Menu按钮,在输入界面中显示一个有关于和退出的菜单。
项目运行效果图:开发步骤:1、新建一个Android项目2、在布局文件中依次添加EditText、TextView、EditText、Button(一定要按照界面上控件显示的顺序在布局文件中添加)3、再新建一个布局文件用来显示计算的结果;在这个布局文件中添加一个LinearLayout和一个TextView(默认的布局文件中默认就有一个LinearLayout,所以不需要手动添加,新建的布局文件默认为空,所以需要手动添加)4、编写第一个Activitya) 让Activity继承android的Activityb) 重写Activity的onCreate()方法c) 设置这个Activity的布局文件d) 根据控件id获得控件对象e) 设置控件的值,这个值引用的是string.xml中的值,所以还需要在string.xml文件中设置(最好是使用string.xml中的值,以便实现国际化);这个在布局文件中也能设置;5、新建一个Activity,ResultActivitya) 让Activity继承android的Activityb) 重写Activity的onCreate()方法c) 设置这个Activity的布局文件d) 根据控件id获得控件对象6、在第一个Activity中编写Button的监听器a) 取得两个EditText控件的值b) 创建Intent对象c) 将这两个值存放到Intent对象当中d) 使用Intent对象启用ResultActivitye) 将监听器与Button绑定7、在第二个Activity(ResultActivity)中获得Intent对象a) 获得Intent对象中保存的值并强制转换成int类型b) 计算两个值的积c) 设置控件值8、在第一个Activity中,重写onCreateOptionsMenu()方法,这个方法是用于添加菜单中的菜单项,我们添加两个菜单项9、再在第一个Activity中重写onOptionsItemSelected()方法,这个方法是当点击菜单中菜单项时调用。
Android五⼤布局详解——GridLayout(⽹格布局)GridLayout本章以⼀个⼩的实现⽰例讲述:实现效果如图:代码实现:<?xml version="1.0" encoding="utf-8"?><GridLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:id="@+id/GridLayout1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:columnCount="4"android:orientation="horizontal"android:rowCount="6" ><TextViewandroid:layout_columnSpan="4"android:layout_gravity="fill"android:layout_marginLeft="5dp"android:layout_marginRight="5dp"android:background="#FFCCCC"android:text="0"android:textSize="50sp" /><Buttonandroid:layout_columnSpan="2"android:layout_gravity="fill"android:text="回退" /><Buttonandroid:layout_columnSpan="2"android:layout_gravity="fill"android:text="清空" /><Button android:text="+" /><Button android:text="1" /><Button android:text="2" /><Button android:text="3" /><Button android:text="-" /><Button android:text="4" /><Button android:text="5" /><Button android:text="6" /><Button android:text="*" /><Button android:text="7" /><Button android:text="8" /><Button android:text="9" /><Button android:text="/" /><Buttonandroid:layout_width="wrap_content"android:text="." /><Button android:text="0" /><Button android:text="=" /></GridLayout>。
Androidstudio——LinearLayout(线性布局)Android中有六⼤布局,分别是:LinearLayout(线性布局)RelativeLayout(相对布局)TableLayout(表格布局)FrameLayout(帧布局)AbsoluteLayout(绝对布局)GridLayout(⽹格布局)线性布局。
这个布局简单的说,就是所有控件都依次排序,谁也不会覆盖谁。
线性布局需要定义⼀个⽅向,横向(Android:orientation="horizontal")或纵向(android:orientation="vertical")。
也就是说,控件要么就并排横向的排列,要么就纵向的笔直排列。
⽽Android的开发常⽤到的有LinearLayout和RelativeLayout。
我们屏幕适配的使⽤⽤的⽐较多的就是LinearLayout的weight(权重属性)。
下⾯的关于LinearLayout的⼀些知识。
<LinearLayout +代码> </LinearLayout>⽔平布局android:background="#ef0000"背景颜⾊android:layout_weight="1"块所占的权重android:gravity="center_vertical">对齐⽅式android:id="@+id/LinearLayout1" :为该资源控件设置⼀个资源 id,在 Java 代码中可以通过 findViewById(id) 找到该控件android:layout_width="match_parent":布局的宽度设置为填满⽗容器android:layout_height="match_parent":布局的⾼度设置为填满⽗容器android:orientation="horizontal":布局中控件的排列⽅式设置为⽔平⽅向android:layout_height="fill_parent:布局⾼度设置为充满⽗容器android:layout_margin:外边距,布局或控件距离外部元素的边距android:layout_padding:内边距,布局或控件距离内部元素的边距tools:context=".MainActivity":声明当前布局提供给 activity 使⽤android:layout_weight:设置权重,按⽐例划分⽔平⽅向,将涉及到的 View 的 android:layout_width 属性设置为 0dp,然后使⽤ android:layout_weight 属性设置⽐例即可,如上所⽰,第⼆个 LinearLayout 是第⼀个的两倍。
Android 开发(实验五)实验题目:Android组件布局试验指导老师:班级:计算机科学与技术系班姓名:一、实验目的1、掌握Android组件布局的使用方法2、学会组件布局的重要属性与应用3、能够根据需求,通过布局构建各类实际的页面。
二、实验内容组件布局有:LinearLayout、TableLayout、FrameLayout、RelativeLayout三、实验步骤1、用表格布局完成登录界面<TableLayoutxmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="#FFFFCC"android:stretchColumns="0,3" ><ImageView android:layout_width="fill_parent"android:layout_height="5dp"/><TableRow><ImageViewandroid:layout_width="wrap_content"android:layout_height="100dp"android:src="@drawable/img"android:gravity="center"android:layout_span="4"/></TableRow><TableRow ><TextView/><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:gravity="right"android:text="@string/username"android:textStyle="bold"android:textColor="#000000"/><EditTextandroid:layout_width="fill_parent"android:layout_height="wrap_content" android:gravity="left"android:minWidth="200px"android:id="@+id/ETname"/></TableRow><TableRow ><TextView/><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content" android:gravity="right"android:text="@string/password"android:textStyle="bold"android:textColor="#000000"/><EditTextandroid:layout_width="fill_parent"android:layout_height="wrap_content" android:gravity="left"android:minWidth="200px"android:inputType="textPassword"android:id="@+id/ETpwd"/></TableRow><TableRow><TextView /><Buttonandroid:id="@+id/Btok"android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="right"android:text="@string/button"android:textStyle="bold"/><Buttonandroid:id="@+id/Btcancel"android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="left"android:text="@string/cancel"android:textStyle="bold"/></TableRow></TableLayout>2、使用线性布局完成系统主界面<LinearLayoutxmlns:android="/apk/res/android" android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:background="#FFFFCC"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="欢迎登陆此系统!"android:layout_gravity="center"android:textSize="30sp"android:textColor="#000000"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="退出"android:textSize="30sp"android:textColor="#000000"android:id="@+id/Btquit"/></LinearLayout>3、使用线性布局和相对布局嵌套完成注册页面<LinearLayoutxmlns:android="/apk/res/android" android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:background="#FFFFCC"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="注册"android:layout_gravity="center"android:textSize="30sp"android:textColor="#000000"/><RelativeLayoutxmlns:android="/apk/res/android" android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/lname"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="用户名 "android:layout_gravity="center"android:textSize="20sp"android:textColor="#000000"/><EditTextandroid:id="@+id/ename"android:layout_width="200px"android:layout_height="wrap_content" android:layout_toRightOf="@id/lname"/> <TextViewandroid:id="@+id/lpwd"android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="密码 "android:layout_below="@id/lname"android:layout_marginTop="20px"android:textSize="20sp"android:textColor="#000000"/><EditTextandroid:id="@+id/epwd"android:layout_width="200px"android:layout_height="wrap_content" android:inputType="textPassword"android:layout_toRightOf="@id/lpwd"android:layout_alignTop="@id/lpwd"/> <TextViewandroid:id="@+id/lapwd"android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="确认密码 "android:layout_below="@id/lpwd"android:layout_marginTop="20px"android:textSize="20sp"android:textColor="#000000"/><EditTextandroid:id="@+id/eapwd"android:layout_width="200px"android:layout_height="wrap_content" android:inputType="textPassword"android:layout_toRightOf="@id/lapwd" android:layout_alignTop="@id/lapwd"/> <Buttonandroid:id="@+id/Btok"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="提交"android:layout_below="@id/lapwd"android:layout_marginTop="20px"android:layout_marginRight="20px"android:textSize="20sp"android:textColor="#000000"/><Buttonandroid:id="@+id/Btqx"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="取消"android:layout_below="@id/lapwd"android:layout_toRightOf="@id/Btok"android:layout_alignTop="@id/Btok"android:textSize="20sp"android:textColor="#000000"/></RelativeLayout></LinearLayout>4、事件代码如下:LayoutTestActivity.javapackage youttest;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;public class LayoutTestActivity extends Activity {/** Called when the activity is first created. */ private Button Btok;private Button Btcancel;// private EditText ETname;// private EditText ETpwd;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main);Btok = (Button)findViewById(R.id.Btok);Btcancel = (Button)findViewById(R.id.Btcancel); Btok.setOnClickListener(new myOnClickListener());Btcancel.setOnClickListener(new myOnClickListener());}public class myOnClickListener implements OnClickListener{@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent();switch(v.getId()){case R.id.Btok:intent.setClass(LayoutTestActivity.this, LoginActivity.class);startActivity(intent);break;case R.id.Btcancel:intent.setClass(LayoutTestActivity.this, ZhuCe.class);startActivity(intent);break;}}};}LoginActivity.javapackage youttest;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class LoginActivity extends Activity {private Button Btquit;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.login);Btquit = (Button)findViewById(R.id.Btquit);Btquit.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubnew AlertDialog.Builder(LoginActivity.this).setTitle("确认窗口").setMessage("确定要退出应用程序?").setPositiveButton("确定",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int i) {// TODO Auto-generated method stubfinish();}}).setNegativeButton("取消",new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}}).show();}});}}ZhuCe.javapackage youttest;import android.app.Activity;import android.os.Bundle;public class ZhuCe extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);setContentView(yout.zhuce);}}四、实验结果五、实验总结1、通过本次实验,掌握了Android组件布局的使用方法2、也学会了组件布局的重要属性与应用能够根据需求,通过布局构建各类实际的页面3、实验中遇到的问题,通过自己的努力最后得以解决。
深入解析Android的自定义布局写在前面的话:这篇文章是前Firefox Android工程师(现在跳槽去Facebook了) Lucas Rocha所写,文中对Android中常用的四种自定义布局方案进行了很好地分析,并结合这四种Android 自定义布局方案所写的示例项目讲解了它们各自的优劣以及四种方案之间的比较。
看完这篇文章,也让我对Android 自定义布局有了进一步的了解,于是趁着兴头,我把它翻译成中文,原文链接在此。
只要你写过Android程序,你肯定使用过Android平台内建的几个布局——RelativeLayout, LinearLayout, FrameLayout等等。
它们能帮助我们很好的构建Android UI。
这些内建的布局已经提供了很多方便的构件,但很多情况下你还是需要来定制自己的布局。
总结起来,自定义布局有两大优点:1. 通过减少view的使用和更快地遍历布局元素让你的UI显示更加有效率;2. 可以构建那些无法由已有的view实现的UI。
在这篇博文中,我将实现四种不同的自定义布局,并对它们的优缺点进行比较。
它们分别是: composite view , custom composite view , flat custom view , 和 async custom views 。
这些代码实现可以在我的github上的 android-layout-samples 项目里找到。
这个app 使用上面说到的四种自定义布局实现了相同的UI效果。
它们使用 Picasso 来加载图片。
这个app的UI只是twitter timeline的简化版本——没有交互,只有布局。
好啦,我们先从最常见的自定义布局开始吧: composite view。
Composite ViewComposite views (也被称为 compound views) 是众多将多个view结合成为一个可重用UI组件的方法中最简单的。
Android应用程序布局(1)2011-07-19 9:56作者:吴秦出处:/skynet/本文的主要内容就是分别介绍以上视图的七种布局显示方式效果及实现,大纲如下:1、View布局概述2、线性布局(Linear Layout)2.1、Tips:android:layout_weight="1"3、相对布局(Relative Layout)4、表格布局(Table Layout)5、列表视图(List View)5.1、一个小的改进5.2、补充说明6、网格视图(Grid View)7 、绝对布局()8、标签布局(Tab Layout)1、view的布局显示概述通过前面的学习我们知道:在一个Android应用程序中,用户界面通过View和ViewGroup对象构建。
Android中有很多种View和ViewGroup,他们都继承自View 类。
View对象是Android平台上表示用户界面的基本单元。
View的布局显示方式直接影响用户界面,View的布局方式是指一组View元素如何布局,准确的说是一个ViewGroup中包含的一些View怎么样布局。
ViewGroup 类是布局(layout)和视图容器(View container)的基类,此类也定义了youtParams类,它作为布局参数的基类,此类告诉父视图其中的子视图想如何显示。
例如,XML布局文件中名为layout_something的属性(参加上篇的4.2节)。
我们要介绍的View的布局方式的类,都是直接或间接继承自ViewGroup类,如下图所示:图1、继承自ViewGroup的一些布局类其实,所有的布局方式都可以归类为ViewGroup的5个类别,即ViewGroup的5个直接子类。
其它的一些布局都扩展自这5个类。
下面分小节分别介绍View的七种布局显示方式。
2、线性布局(Linear Layout)线性布局:是一个ViewGroup以线性方向显示它的子视图(view)元素,即垂直地或水平地。
之前我们的Hello World!程序中view的布局方式就是线性布局的,一定不陌生!如下所示res/layour/main.xml:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/andro id"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="horizontal"><!-- have an eye on ! --><Button android:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello, I am a Button1"android:layout_weight="1"/><Button android:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello, I am a Button2"android:layout_weight="1"/><Button android:id="@+id/button3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello, I am a Button3"android:layout_weight="1"/><Button android:id="@+id/button4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello, I am a Button4"android:layout_weight="1"/><Button android:id="@+id/button5"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello, I am a Button5"android:layout_weight="1"/></LinearLayout>从上面可以看出根LinearLayout视图组(ViewGroup)包含5个Button,它的子元素是以线性方式(horizontal,水平的)布局,运行效果如下图所示:图2、线性布局(水平或者说是横向)如果你在android:orientation="horizontal"设置为vertical,则是是垂直或者说是纵向的,如下图所示:图3、线性布局(垂直或者说是纵向)2.1、Tips:android:layout_weight="1"这个属性很关键,如果你没有显示设置它,它默认为0。
把上面布局文件(水平显示的那个)中的这个属性都去掉,运行会得出如下结果:图4、layout_weight属性没有了这个属性,我们本来定义的5个Button运行后却只显示了2个Button,为什么呢??"weight"顾名思义是权重的意思,layout_weight 用于给一个线性布局中的诸多视图的重要程度赋值。
所有的视图都有一个layout_weight值,默认为零,意思是需要显示多大的视图就占据多大的屏幕空间。
这就不难解释为什么会造成上面的情况了:Button1~Button5都设置了layout_height和layout_width属性为wrap_content即包住文字内容,他们都没有设置layout_weight 属性,即默认为0.,这样Button1和Button2根据需要的内容占据了整个屏幕,别的就显示不了啦!若赋一个高于零的值,则将父视图中的可用空间分割,分割大小具体取决于每一个视图的layout_weight值以及该值在当前屏幕布局的整体layout_weight值和在其它视图屏幕布局的layout_weight值中所占的比率而定。
举个例子:比如说我们在水平方向上有一个文本标签和两个文本编辑元素。
该文本标签并无指定layout_weight值,所以它将占据需要提供的最少空间。
如果两个文本编辑元素每一个的layout_weight值都设置为1,则两者平分在父视图布局剩余的宽度(因为我们声明这两者的重要度相等)。
如果两个文本编辑元素其中第一个的layout_weight值设置为1,而第二个的设置为2,则剩余空间的三分之二分给第一个,三分之一分给第二个(数值越小,重要度越高)。
3、相对布局(Relative Layout)相对布局:是一个ViewGroup以相对位置显示它的子视图(view)元素,一个视图可以指定相对于它的兄弟视图的位置(例如在给定视图的左边或者下面)或相对于RelativeLayout的特定区域的位置(例如底部对齐,或中间偏左)。
相对布局是设计用户界面的有力工具,因为它消除了嵌套视图组。
如果你发现你使用了多个嵌套的LinearLayout视图组后,你可以考虑使用一个RelativeLayout 视图组了。
看下面的res/layour/main.xml:<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="/apk/res/and roid"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:id="@+id/label"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Type here:"/><EditTextandroid:id="@+id/entry"android:layout_width="fill_parent"android:layout_height="wrap_content"android:background="@android:drawable/editbox_background"android:layout_below="@id/label"/><!-- have an eye on ! --> <Buttonandroid:id="@+id/ok"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/entry" <!-- have an eye on ! -->android:layout_alignParentRight="true" <!-- have an eye on ! -->android:layout_marginLeft="10dip"android:text="OK"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_toLeftOf="@id/ok" <!-- have an eye on ! -->android:layout_alignTop="@id/ok" <!-- have an eye on ! -->android:text="Cancel"/></RelativeLayout>从上面的布局文件我们知道,RelativeLayout视图组包含一个TextView、一个EditView、两个Button,注意标记了<!-- have an eye on ! -->(请注意运行代码的时候,请把这些注释去掉,否则会运行出错,上面加上是为了更加醒目!)的属性,在使用相对布局方式中就是使用这些类似的属性来定位视图到你想要的位置,它们的值是你参照的视图的id。