Android之布局初步(一)

我们知道,一个Activity代表一个屏幕,屏幕中显示的内容就是一个一个的控件,这些控件都是View的子类,其中有一个很重要的子类叫ViewGroup,我们可以将其比作一个容器,其中可以容纳其他的View和ViewGroup,这样,我们就可以通过嵌套来实现任意复杂的界面布局。在这个嵌套结构中,ViewGroup是不可视的,我们平时看到的都是View的子类。这个整体结构可用下图形象表达(该图来自于官方文档):

幸运的是,Android为我们提供了丰富的控件资源,我们可以直接拿来用,利用这些控件我们便可设计出很多优秀的界面。设置一个布局 有俩种方式。其一是在代码中设置,通过创建一个个ViewGroup和View的实例,并调用方法设置好各自的属性,然后调用addView将它们组织成一棵树,然后将根View设置给Activity,完成布局。这种方法的好处在于可以动态的设置布局,比较灵活;但是不利于维护,用的情况不是很多。其二就是通过xml文件来设置布局,这种方法很常用,因为大多数布局是不会发生改变,在运行前便可以确定,再者这种设计方法将应用程序的“行为”与“表现”分开来,便于维护,所以这种方法是我们要重点掌握的。

关于XML文件,不了解它的人(我也是一个)可以将其和HTML类比,就是一大堆的标签,每个标签都有一大堆的属性(这个很烦的),标签决定了我们定义什么样的控件,标签的属性定义了这个控件如何“表现”。对于我们这样的初学者,一定要慢慢来,属性有很多,一开始只需关注那些常用的即可。

每个标签有很多属性,这些属性有的是它独有的(学习每个控件时,这种属性是我们要重点关注的),有的属性是从父View继承来的,还有些属性是根View定义的,这种属性对于每个子View都是可用的(比如id属性)。

ID属性:对于每一个控件,如果我们要在代码中引用它,那么我们就应该在XML文件中为它指定id,这个id在整个布局树中是唯一的。为id指定值得时候,通常用一字符串,当编译时,adt工具会为我们自动将其转换为一个整型值。指定id的语法为:

android:id="@+id/my_button"

其中@标示我们要引用资源,+表示这是个新加入的资源。

例如,我们可以用如下方式定义一个Button控件:

<Button android:id="@+id/my_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/my_button_text"/>

然后再在代码文件中这样引用这个Button:

Button myButton = (Button) findViewById(R.id.my_button);

layout parameter:布局参数。当我们在XML文件中定义控件的时候总是会设置layout_something,这些东西其实是为了告诉父ViewGroup“自己希望”如何去被布局,注意是自己希望,实际上,并不是永远都能按自己的希望来,比如设备的屏幕大小是有限的,这时如果我们所要求的比屏幕大,则会造成实际的尺寸要比所要求的大。每个父ViewGroup都实现了一个继承自ViewGroup.LayoutParameter的内部类,这个类决定了每个子View的大小和尺寸等属性。每个ViewGroup的子类都实现了不同的LayoutParameter,作为子控件,定义的是其父控件对应的那个LayoutParameter,即使这个子控件可以为它的子控件定义额外的LayoutParameter。这种关系可用下图表示:

注:以上内容均来自本人对android官方文档的理解,若有纰漏,希望指正,本人也是初学者,这篇博客一方面是希望可以帮助那些正在学习android的朋友们,另一方面也是作为本人的读书笔记。欢迎交流,本人qq:750516366
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值