zoukankan      html  css  js  c++  java
  • android学习---布局Layout

    1.Layout介绍

      为适应各种界面风格,满足开发的需要,Android提供了5种布局方式,分别是LinearLayout(线性布局)、FrameLayout(框架布局)、RelativeLayout(相对布局)、AbsoluteLayout(绝对布局)以及TableLayout(表格布局),通过这5种布局我们可以在手机屏幕上随心所欲的摆放各种控件。

      在Android的系统中,可视化的控件是从Android.view.View类中继承而来。控件的创建方式通常有2种方式:

      1、通过在xml布局文件中配置控件的各种属性,然后在程序中加载要使用的控件。

      2、直接在程序中设置控件属性,并加载控件。

      xml布局文件是android系统中定义控件的常用方法,这样做的目的与好处是显而易见的,使程序代码与图形UI分离,方便代码及图形UI的各自维护。

      xml布局文件必须包含在res/layout目录中,且每一个xml布局文件的根节点可以是任意的视图标签。为xml文件布局中的标签指定id时需要使使用如下形式:

      android:id=“@+id/标签名称”

      每一个标签的id都会在R类中生成与之对应的变量,该标签名称便保存在R文件当中了。

      如果是要使用xml布局文件,则需要在oncreate方法中使用setContentView来加载指定的xml布局文件。加载方法如下:

    public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main); }

    获得XML布局文件应该注意以下几点:

      1)使用findViewById之前需要使用setContentView先加载XML文件、布局文件会抛出异常信息。也就是说findViewById方法要在setContentView之后才能使用;

      2)所有的XML布局文件的视图id都在R类生成对应的变量

    2.Layout常用属性

      通常情况下,开发人员可以使用两种方式来创建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.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:内容包裹。

      在Android系统中表示单位长度的方式通常有三种,分别是px、dp、sp。

        px:像素。

        dp:dpi,表示屏幕实际的像素。

        sp:与scale无关的像素,与dp类似。

     

      通常,如果设置表示长度、高度等属性时可以使用dp 或sp。但如果设置字体,则需要使用sp。

      1、如何控制某一控件在父控件中的相对位置呢?  

      在Android系统中提供了layout_margin,用来控制某一控件边缘相对于父控件的边距。

         android:layout_marginTop表示某一控件相对于父控件顶部的距离。

         android:layout_marginLeft表示某一控件相对于父控件左边框的距离。

         android:layout_marginRight表示某一控件相对于父控件右边框的距离。

         android:layout_marginButtom表示某一控件相对于父控件底部的距离。

       2、如何控制某一控件中内容在该控件中的相对位置呢?

      在Android系统中提供了padding,用来控制某一控件中内容相对于该控件边缘的边距。

           android:paddingTop表示某一控件中的内容相对于该控件边缘顶部的距离。

           android:paddingLeft表示某一控件中的内容相对于该控件左边缘的距离。

         android:paddingRight表示某一控件中的内容相对于该控件右边缘的距离。

         android:paddingButtom表示某一控件中的内容相对于该控件边缘底部的距离。

      3、android:gravity和android:layout_gravity的区别

         android:gravity用于设置View组件的对齐方式,

         android:layout_gravity用于设置Container组件的对齐方式。

  • 相关阅读:
    httpcontext in asp.net unit test
    initialize or clean up your unittest within .net unit test
    Load a script file in sencha, supports both asynchronous and synchronous approaches
    classes system in sencha touch
    ASP.NET MVC got 405 error on HTTP DELETE request
    how to run demo city bars using sencha architect
    sencha touch mvc
    sencha touch json store
    sencha touch jsonp
    51Nod 1344:走格子(贪心)
  • 原文地址:https://www.cnblogs.com/lea-fu/p/3287620.html
Copyright © 2011-2022 走看看