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组件的对齐方式。

  • 相关阅读:
    linux
    算法
    算法
    数据结构 与 算法
    mysql
    mysql
    mysql
    mysql
    【解决】Could not get JDBC Connection、java.lang.InterruptedException问题和排查过程
    git: unable to checkout working tree error: unable to create file Filename too long on windows
  • 原文地址:https://www.cnblogs.com/lea-fu/p/3287620.html
Copyright © 2011-2022 走看看