文档章节

View和Layout

蜀山下的鱼
 蜀山下的鱼
发布于 2015/04/29 00:41
字数 1355
阅读 20
收藏 0

1、 View介绍

  在Android中,所有的可视化组件都是继承自View类,用户通过View和ViewGroup或者扩展自他们的类来构建用户界面。一个View对象处理它自己的测度、布局、绘图、焦点改变、滚动、键/手势等与屏幕上矩形区域的交互。作为用户界面中的对象,View也是与用户交互的交互事件接收器。

 

(来自官网)

  在Android中,类的继承方式如上所示,Control用来实现相对比较简单的功能,而Widget用来组合控件和构建更加复杂的控件(如用户自定义组件)。 Control也可以和widget相互转换。

2、 Layout介绍

  在Android应用程序中,一个视图有很多的控件,如何才能控制这些控件的位置和排列?在网页中我们可以通过Html中的table,div来布局,在Android中我们通过Layout实现布局。

  在Android中主要有以下几种Layout:

  •  LinearLayout

    LinearLayout线性布局,包含在LinearLayout里面的控件按顺序排列成一行或者一列。

    主要介绍下他的两个主要的属性:

    •  Orientation——方向,当设置为Horizon时,Layout中的控件将排成一行,当设置为Vertical时,Layout中的控件将排成一行。
    •  FillMode——填充方式,即设置android:layout_width和android:layout_height,可以为三种值:具体的像素值、wrap_content, 表示按控件中文本实际长度显示 、 fill_parent, 表示填充剩下的所有可用空间。具体的例子可以在官网上查看,这里就不在举例了。
  • RelativeLayout

    RelativeLayout相对布局,它是依靠与父容器或同在一容器中其它控件的相对位置来定位的。

         两种情况下的共四种主要属性:

    •  相对父容器:

        android:layout_alignParentTop: 控件的顶部与父容器的顶部对齐。

        android:layout_alignParentBottom:控件的底部与父容器的底部对齐。           

        android:layout_alignParentLeft:控件左边与父容器的左边缘对齐。

        android:layout_alignParentRight:控件右边与父容器的右边缘对齐。

    •  相对同一容器中的其它控件:

  android:layout_above: 表示此控件在另一控件的上面。

  android:layout_below:表示此控件在另一个控件的下面。

  android:layout_toLeftOf:表示此控件在另一个控件的左边。            

  android:layout_toRightOf:表示此控件在另一个控件的右边。

                    android:layout_alignTop: 表示此控件与另一控件顶部对齐。

                    android:layout_alignBottom:表示此控件与另一控件底部对齐。

                    android:layout_alignLeft:表示此控件与另一个控件左对齐。

                    android:layout_alignRight:表示此控件与另一个控件右对齐。

          例子请查看官方网站的例子

  • TableLayout

    表格布局,类似于HTML的Table。通过TableRow来定义一行,如果一个控件占用多列可以设置android:layout_span, 类似于HTML中Table的colspan。默认情况下一个控件是按顺序放置在每一列的(column 0, column 1….), 也可以通过android:layout_column指定放在哪一列。如果一列内容过长或者过短,可以通过android:stretchColumns和android:shrinkColumns来增加或者减少此列的宽度。

    例子请查看官方网站的例子

  • AbsoluteLayout

    绝对布局,就是Android不提供任何布局控制,而是由我们自己通过X坐标,Y坐标来控制组件的位置,在这个容器里面的组件位置、大小都需要我们自己来控制。

         layout_x :制定该子组件的x坐标。

         layout_y:制定该子组件的y坐标

         非常不建议使用AbsoluteLayout来进行控件布局,因为用户手机屏幕尺寸有大有小,如果使用这个来布局,那么你想想你自己的工作量吧。

3、 Widget介绍

   Widget分为系统提供和用户自定义两部分,对于用户自定义部分将在后面的笔记中介绍。在Android系统中为我们提供了一个标准的View工具箱,我们只需要调用这些工具就可以创建出外观一致的应用程序。

  下面是Android系统为我们提供的部分控件:

  ❑ TextView

      标准的只读文本label。它支持多行显示、字符串格式化和文本自动换行。

  ❑ EditText

     可编辑的文本输入框。它支持多行输入和文字换行。

  ❑ ListView

     一个ViewGroup,以列表的方式创建和管理一组显示项。标准的ListView使用TextView来显示每一个字符串数组内的值。

  ❑ Spinner

     组合控件,显示一个TextView和一个关联的ListView,用来从一个列表中选择一项并显示选择项在TextView中。它还有一个button,当按下时显示一个选择框。

  ❑ Button

     标准的按钮。

  ❑ CheckBox

     两种状态的button,代表checked或unchecked。

  ❑ RadioButton

     单选按钮。

  更多的可以查看官方帮助文档。

4、 创建一个Menu

  当你打开一个应用程序时,点击手机的Menu键,这个时候弹出来的那么菜单选项就是Menu。

  如果要创建一个Menu菜单,需要重写onOptionsItemSelected(响应Menu选择),onCreateOptionsMenu(创建Menu菜单)这两个方法。

 

总结

  今天学习了View和Layout,并在结束的时候举了一个创建Menu的例子。Layout作为布局控制,对我们以后的开发及其重要,在以后的开发中必定会经常接触到。

本文转载自:http://blog.csdn.net/caiwenfeng_for_23/article/details/13614815

蜀山下的鱼
粉丝 9
博文 405
码字总数 0
作品 0
广州
高级程序员
私信 提问
android -------- ConstraintLayout 约束属性(二)

ConstraintLayout 介绍 (一) ConstraintLayout 最基本的属性控制有以下几个,即 layoutconstraintXXXtoYYYOf 格式的属性,即将“View A”的方向 XXX 置于 “View B”的方向 YYY 。当中,V...

切切歆语
2018/10/08
0
0
android 动态显示和隐藏状态栏

View类提供了setSystemUiVisibility和getSystemUiVisibility方法,这两个方法实现对状态栏的动态显示或隐藏的操作,以及获取状态栏当前可见性。 setSystemUiVisibility(int visibility)方法可...

Jamsm
2016/02/02
131
0
setNeedsUpdateConstraints,needsUpdateConstraints等基

1、setNeedsUpdateConstraints 当一个自定义view的某个属性发生改变,并且可能影响到constraint时,需要调用此方法去标记constraints需要在未来的某个点更新,系统然后调用updateConstraints...

北方人在上海
2016/05/25
49
0
View and ViewGroup's Measure Layout and Draw

View and ViewGroup's Measure Layout and Draw 杨辉的个人博客2015-05-19156 阅读 layoutview Begin from ViewRoot’s performTrasversals() -> performMeasure() -> performLayout() -> pe......

杨辉的个人博客
2015/05/19
0
0
iOS中AutoLayer自动布局流程及相关方法

关于UIView的Layer,IOS提供了三个方法: 1、layoutSubviews 在iOS5.1和之前的版本,此方法的缺省实现不会做任何事情(实现为空),iOS5.1之后(iOS6开始)的版本,此方法的缺省实现是使用你设置...

whj
2014/03/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

10分钟详解Spring全家桶7大知识点

点关注,不迷路;持续更新Java架构相关技术及资讯热文!!! Spring框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶。它包括SpringMVC、SpringBoot、Spring Cloud、Spr...

我最喜欢三大框架
20分钟前
4
0
注册服务

列出所有服务[root@localhost ~]# systemctl list-unit-files[root@localhost ~]# systemctl status mysqld[root@localhost ~]# systemctl stop mysqld[root@localhost ~]# ......

jxlgzwh
23分钟前
0
0
解决jdk8 stream tomap方法报错:java.lang.IllegalStateException: Duplicate key异常解决(key重复)

List<User> userList = User.ME.loadList(users); if (CollectionUtils.isNotEmpty(userList)) { Map<Long, User> userMap = userList.stream().filter(Objects::nonN......

冰峰雪座
33分钟前
0
0
jdk中的一些命令

jdk中的一些命令 jps jstack jmap jstat jhat jinfo javap http://www.importnew.com/18398.html

晨猫
33分钟前
1
0
Bystack的高TPS共识算法

共识算法是分布式系统保证节点数据状态一致性的方法,在区块链的共识算法分POW(工作量证明)和POS(权益证明)两大类。第一类POW模式是在公链项目中运用的最广泛应用的共识算法,比特币长达10年...

比原链Bytom
34分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部