zoukankan      html  css  js  c++  java
  • RelativeLayout与LinearLayout的区别

    1、LinearLayout是线性布局控件,它包含的子控件将以横向或竖向的方式排列,按照相对位置来排列所有的widgets或者其他的 containers,超过边界时,某些控件将缺失或消失。因此一个垂直列表的每一行只会有一个widget或者是container,而不管他们有多 宽,而一个水平列表将会只有一个行高(高度为最高子控件的高度加上边框高度)。LinearLayout保持其所包含的widget或者是 container之间的间隔以及互相对齐(相对一个控件的右对齐、中间对齐或者左对齐)。

    xml属性
    android:baselineAligned:是否允许用户调整它内容的基线。
    android:baselineAlignedChildIndex:当一个线性布局与另一个布局是按基线对齐的一部分,它可以指定其内容的基线对齐方式。
    android:gravity:指定如何在该对象中放置此对象的内容(x/y坐标值)。
    android:orientation:设置它内容的对其方向(横向/竖向)。
    android:orientation="vertical" 表示竖直方式对齐  
    android:orientation="horizontal"表示水平方式对齐  
    android:layout_width="match_parent"定义当前视图在屏幕上  
        可以消费的宽度,match_parent即填充整个屏幕。  
    android:layout_height="wrap_content":随着文字栏位的不同  
        而改变这个视图的宽度或者高度。有点自动设置框度或者高度的意思。也就是视图将根据其内容自动调整大小。(表示空间的宽和高是自适应的,也就是说 他能根据text的多少来自适应控件的大小)
    android:layout_weight 用于给一个线性布局中的诸多视图的重要度赋值。  
        所有的视图都有一个layout_weight值,默认为零,意思是需要显示  
        多大的视图就占据多大的屏幕空 间。若赋一个高于零的值,则将父视  
        图中的可用空间分割,分割大小具体取决于每一个视图的layout_weight  
        值以及该值在当前屏幕布局的整体 layout_weight值和在其它视图屏幕布  
        局的layout_weight值中所占的比率而定。  
        举个例子:比如说我们在 水平方向上有一个文本标签和两个文本编辑元素。  
        该文本标签并无指定layout_weight值,所以它将占据需要提供的最少空间。  
        如果两个文本编辑元素每一个的layout_weight值都设置为1,则两者平分  
        在父视图布局剩余的宽度(因为我们声明这两者的重要度相等)。如果两个   
        文本编辑元素其中第一个的layout_weight值设置为1,而第二个的设置为2,  
        则剩余空间的三分之二分给第一个,三分之一分给第二个(数值越小,重要  
        度越高)。

    LinearLayout还支持为其包含的widget或者是container指定填充权值。好处就是允许其包含的widget或者是 container可以填充屏幕上的剩余空间。这也避免了在一个大屏幕中,一串widgets或者是containers挤成一堆的情况,而是允许他们放 大填充空白。剩余的空间会按这些widgets或者是containers指定的权值比例分配屏幕。默认的 weight 值为0,表示按照widgets或者是containers实际大小来显示,若高于0的值,则将Container剩余可用空间分割,分割大小具体取决于 每一个widget或者是container的layout_weight及该权值在所有widgets或者是containers中的比例。例如,如果 有三个文本框,其中两个指定的权值为1,那么,这两个文本框将等比例地放大,并填满剩余的空间,而第三个文本框不会放大,按实际大小来显示。如果前两个文 本框的取值一个为2,一个为1,显示第三个文本框后剩余的空间的2/3给权值为2的,1/3大小给权值为1的。也就是权值越大,重要度越大。

    如 果LinearLayout包含子LinearLayout,子LinearLayout之间的权值越大的,重要度则越小。如果有 LinearLayout A包含LinearLayout C,D,C的权值为2,D的权值为1,则屏幕的2/3空间分给权值为1的D,1/3分给权值为2的C。在LinearLayout嵌套的情况下,子 LinearLayout必须要设置权值,否则默认的情况是未设置权值的子LinearLayout占据整个屏幕。

    2、RelativeLayout相对布局允许子元素指定它们相对于其父元素或兄弟元素的位置,这是实际布局中最常用的布局方式之一。它灵活性大很多,当然属性也多,操作难度也大,属性之间产生冲突的的可能性也大,使用相对布局时要多做些测试。

    RelativeLayout用到的一些重要的属性:

    第一类:属性值为true或false
    android:layout_centerHrizontal 水平居中
    android:layout_centerVertical 垂直居中
    android:layout_centerInparent 相对于父元素完全居中
    android:layout_alignParentBottom 贴紧父元素的下边缘
    android:layout_alignParentLeft 贴紧父元素的左边缘
    android:layout_alignParentRight 贴紧父元素的右边缘
    android:layout_alignParentTop 贴紧父元素的上边缘
    android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物
    第二类:属性值必须为id的引用名“@id/id-name”
    android:layout_below 在某元素的下方
    android:layout_above 在某元素的的上方
    android:layout_toLeftOf 在某元素的左边
    android:layout_toRightOf 在某元素的右边
    android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
    android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
    android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
    android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐
    第三类:属性值为具体的像素值,如30dip,40px
    android:layout_marginBottom 离某元素底边缘的距离
    android:layout_marginLeft 离某元素左边缘的距离
    android:layout_marginRight 离某元素右边缘的距离
    android:layout_marginTop 离某元素上边缘的距离
     
    EditText的android:hint
    设置EditText为空时输入框内的提示信息。
    android:gravity 
    android:gravity属性是对该view 内容的限定.比如一个button 上面的text. 你可以设置该text 在view的靠左,靠右等位置.以button为例,android:gravity="right"则button上面的文字靠右
    android:layout_gravity
    android:layout_gravity是用来设置该view相对与起父view 的位置.比如一个button 在linearlayout里,你想把该button放在靠左、靠右等位置就可以通过该属性设置.以button为例,android:layout_gravity="right"则button靠右
     
    android:layout_alignParentRight
    使当前控件的右端和父控件的右端对齐。这里属性值只能为true或false,默认false。
    android:scaleType:
    android:scaleType是控制图片如何resized/moved来匹对ImageView的size。ImageView.ScaleType / android:scaleType值的意义区别:
    CENTER /center 按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示
    CENTER_CROP / centerCrop 按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)
    CENTER_INSIDE / centerInside 将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽
    FIT_CENTER / fitCenter 把图片按比例扩大/缩小到View的宽度,居中显示
    FIT_END / fitEnd 把图片按比例扩大/缩小到View的宽度,显示在View的下部分位置
    FIT_START / fitStart 把图片按比例扩大/缩小到View的宽度,显示在View的上部分位置
    FIT_XY / fitXY 把图片不按比例扩大/缩小到View的大小显示
    MATRIX / matrix 用矩阵来绘制,动态缩小放大图片来显示。
    ** 要注意一点,Drawable文件夹里面的图片命名是不能大写的。

    注意:在使用LinearLayout时必须指定:

    android:orientation="vertical"(纵向)  或者 android:orientation="horizontal"(横向)

  • 相关阅读:
    UVA 10462 Is There A Second Way Left?(次小生成树&Prim&Kruskal)题解
    POJ 1679 The Unique MST (次小生成树)题解
    POJ 2373 Dividing the Path (单调队列优化DP)题解
    BZOJ 2709 迷宫花园
    BZOJ 1270 雷涛的小猫
    BZOJ 2834 回家的路
    BZOJ 2506 calc
    BZOJ 3124 直径
    BZOJ 4416 阶乘字符串
    BZOJ 3930 选数
  • 原文地址:https://www.cnblogs.com/Tinoloving/p/4703940.html
Copyright © 2011-2022 走看看