用代码教你入门android--2 布…

转载请注明原作者:@author:huanglei_jmr http://blog.sina.com.cn/u/3113060227

接下讲布局:注意复杂的布局我们不用activity代码来写,都写在xml中咯!

下面的每种布局我都在layout文件夹中建立一个android xml文件,来写布局,然后再main.activity

//  super.setContentView(R.layout.datadisplay);//table布局

//  super.setContentView(R.layout.relativelayoutdemo);//relative布局

    super.setContentView(R.layout.mutilylayout);//嵌套布局

但是讲布局之前要先讲一个重要的东西,是所有布局都拥有的LayoutParams

在每个布局的activity代码中我们都会看见一行这样的代码:TableLayout layout new TableLayout(this);// 定义布局管理器   

TableLayout.LayoutParams layoutParams new TableLayout.LayoutParams(   ViewGroup.LayoutParams.FILL_PARENT,    ViewGroup.LayoutParams.FILL_PARENT);// 定义布局管理器参数  

为什么要这样做呢?解释LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layout占领的,如果将一个View添加到一个Layout(如将TextView添加到TableLayout 这里TextView就相当于TableLayout 的子视图,最好告诉Layout用户期望的布局方式,也就是将一个认可的layoutParams传递进去。
      
可以这样去形容LayoutParams,在象棋的棋盘上,每个棋子都占据一个位置,也就是每个棋子都有一个位置的信息,如这个棋子在44列,这里的“44就是棋子的LayoutParams
      
LayoutParams类也只是简单的描述了宽高,宽和高都可以设置成三种值:
       1
,一个确定的值;
       2
FILL_PARENT,即填满(和父容器一样大小);
       3
WRAP_CONTENT,即包裹住组件就好。

LayoutParams继承于Android.View.ViewGroup.LayoutParams

11:线性布局:LinearLayout ,上面有过布局的介绍,即所有的布局都是以一行或者一列的形式进行显示的!

 

 

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="horizontal" >

 

12FrameLayout框架布局:框架布局管理器是将组件都放在屏幕的左上角,所有的组件是层叠显示的!什么叫层叠,有啥用:比如播放器页面上的播放箭头就是一个button层叠摆放的!

13TableLayout(常用)在TableLayout中,我们也有对应的TableRow来表示表格的一行。但在Android中就不往下区分表格单元了,也就是没有相应的

<</SPAN>TableLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:shrinkColumns="2"  //意思是下面表头的id2的可以多行显示,一般数据太多就选此

    android:collapseColumns="0,3"  //面表头的id0 3的不显示了

     >

<</SPAN>TableRow>

       

        <</SPAN>TextView

            android:layout_column="0"

            android:gravity="center_horizontal"

            android:padding="10dp"

            android:text="序号" />

        <</SPAN>TextView

            android:layout_column="1"

            android:gravity="center_horizontal"

            android:padding="10dp"

            android:text="姓名" />

       …………………………..

分割线-à

  <</SPAN>View

        android:layout_height="2dp"

        android:background="#FDF5E6" />

   

    <</SPAN>TableRow>

        <</SPAN>TextView

            android:layout_column="0"

            android:gravity="center_horizontal"

            android:padding="5dp"

            android:text="001" />

        <</SPAN>TextView

            android:layout_column="1"

            android:gravity="center_horizontal"

            android:padding="10dp"

            android:text="jmr" />

       …………………………………………….

    </</SPAN>TableRow>

14: view标签:所有GUI的父类,可以表示任何的组件,下面的代码效果如HTML中的


元素效果,设置宽度是2dp,颜色为#FDF5E6

<</SPAN>View

        android:id="@+id/xx"

        android:layout_height="2dp"

        android:background="#FDF5E6" />

15RelativeLayout相对布局管理器是基于一个参考点而言的布局管理器。就像Web开发中的相对路径的概念,是基于一定的参考点而创建的。在Android中的相对布局管理器就是在一个参考点的四周(上,下,左,右)布局的管理器。

怎么相对呢?

在某个组件中加上: android:layout_toRightOf="@+id/img1"  就是相对于组件@+id/img1右边放置

当然可以推测还有 android:layout_below

activity中就这样   params.addRule(RelativeLayout.BELOW, R.id.btn);// 设置放置规则 ,将此layout放置在 R.id.btn下方

这种布局的好处是自己可以多调节,比如那个角落还有空就在哪个角落中用相对的布局来进行配置,可以设置上下左右的相对位置达到比较精确的放置位置!

16AbsoluteLayout绝对布局管理器。这和CSS中的定位布局是类似的。CSS中我们可以通过相对布局管理器对HTML元素进行布局,也可以通过绝对布局定位通过指定top,left等属性来为元素进行布局。而在Android之中,我们还有一个绝对布局管理器可以做到同样的效果。
    首先说明绝对布局管理器是已经在Android 2.3之后被废弃了,是不建议使用的。但绝对布局管理器却是布局管理器中最早的一种,下面来看一下绝对布局管理器的文档
!为甚被遗弃,因为推荐相对布局,哈哈 ,下面就叫绝对!因为我们无法预知运行程序的设备实际情况,如果我们定义坐标,很可能我们的程序是不能正常显示的。所以在Android 2.3之后该布局管理器就被废除了。

android:layout_x="40dp" 

android:layout_y="10dp" 

17:上面讲了这么多,终于讲到屌处了:布局管理器的嵌套

布局管理器的嵌套就是将多种布局管理器混合使用,以达到复杂布局的排版效果。如果一个布局页面效果复杂,可能使用一种布局管理器无法完成,那么我们就需要将多种布局管理器嵌套起来以达到显示效果。在Web开发中,编写的CSS基本都是设置嵌套元素的样式的,这个理念是类似的。

注意在嵌套布局管理器时我们要注意设置各个布局管理器的layout_height为包裹高度,而不能设置成为填充屏幕,否则该布局管理器就会占据剩余屏幕整个内容,而其它的布局管理器将无法显示。
    在嵌套布局管理器时,页面的排版已经非常的复杂了,而若想使用Java代码对其进行控制,这个难度就已经很大了,所以在复杂布局管理器下不建议再编写Java代码来控制了,使用XML文件来布局是比较简单的方式。

18:中级视图组件DatePicker和时间选择器TimePicker

DatePickerFrameLayout的子类,也就是说它的内部实现使用了框架布局TimePicker也是

上面我一直怀疑@+id/name 这后面的idname是不是应该有关键字的,比如,哦不对不对,是没有的,随意取得,究竟取那个组件还的看标签名 ,如<</SPAN>DatePicker 而不要靠id来识别组件类别!

上面布局就基本上讲完了!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huangleijay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值