栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android安卓学习笔记: 2.LinearLayout(线性布局)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android安卓学习笔记: 2.LinearLayout(线性布局)

2.LinearLayout(线性布局)

Android中有六大布局,分别是:
LinearLayout(线性布局),
RelativeLayout(相对布局),
TableLayout(表格布局)
frameLayout(帧布局),
AbsoluteLayout(绝对布局),
GridLayout(网格布局)

weight(权重)属性详解:
①最简单用法:
如图:

   
        
        
       
        
        
        
  

要实现第一个的1:1的效果,只需要分别把两个LinearLayout的weight改成1和1就可以了 用法归纳: 按比例划分水平方向:将涉及到的View的android:width属性设置为0dp,然后设置为android weight属性设置比例即可;类推,竖直方向,只需设android:height为0dp,然后设weight属性即可!

②weight属性详解:
当然,如果我们不适用上述那种设置为0dp的方式,直接用wrap_content和match_parent的话, 则要接着解析weight属性了,分为两种情况,wrap_content与match_parent!另外还要看 LinearLayout的orientation是水平还是竖直,这个决定哪个方向等比例划分

1)wrap_content比较简单,直接就按比例的了

    
    
        
         
         
    
  

2)match_parent(fill_parent):这个则需要计算了

我们写这段简单的代码:

    
    
        
         
         
    

这个时候就会有疑问了,怎么会这样,这比例是2:1吧,那么three去哪了?代码里面明明有 three的啊,还设置了3的,而1和2的比例也不对耶,1:2:3却变成了2:1:0,怎么会这样呢? 答:这里其实没那么简单的,还是需要我们计算的

1.系统先给3个textview分配他们所要的宽度fill_parent,也就是说每一个都是填满他的父控件,
2.那么这时候的剩余空间=1个parent_width-3个parent_width=-2个parent_width (parent_width指的是屏幕宽度)
3.那么第一个TextView的实际所占宽度应该=fill_parent的宽度,
即parent_width + 他所占剩余空间的权重比列1/6 * 剩余空间大小(-2 parent_width)=2/3parent_width
4.同理第二个TextView的实际所占宽度=parent_width + 2/6*(-2parent_width)=1/3parent_width;
5.第三个TextView的实际所占宽度=parent_width + 3/6*(-2parent_width)=0parent_width;所以就是2:1:0的比列显示了。第三个就直接没有空间了

同理计算
比例为:1:1:1

按照上面的计算方法算一次,结果是:1/3 1/3 1/3,
接着我们再试下:2:3:4

计算结果:5/9 3/9 1/9,

③Java代码中设置weight属性:

setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,     
        LayoutParams.WRAP_CONTENT, 1)); 
为LinearLayout设置分割线

①直接在布局中添加一个view,这个view的作用仅仅是显示出一条线,代码也很简单:

 

这个是水平方向上的黑线,当然你也可以改成其他颜色,或者使用图片

②第二种则是使用LinearLayout的一个divider属性,直接为LinearLayout设置分割线 这里就需要你自己准备一张线的图片了
1)android:divider设置作为分割线的图片
2)android:showDividers设置分割线的位置,none(无),beginning(开始),end(结束),middle(每两个组件间) 3)dividerPadding设置分割线的Padding

  
  
    
注意事项:

使用Layout_gravity的一个很重要的问题!!! 问题内容: 在一个LinearLayout的水平方向中布置两个TextView,想让一个左,一个右,怎么搞? 或许你会脱口而出:“gravity设置一个left,一个right就可以啦!” 真的这么简单?你试过吗?写个简单的Layout你就会发现,事与愿违了: 代码如下:

  
  
      
  
      
  


看到这里你会说:哎呀,真的不行耶,要不在外层LinearLayout加个gravity=left的属性,然后设置第二个 TextView的layout_gravity为right,恩,好我们试一下:

  
  
      
  
      
  

结果还是一样

那该怎么办呢?

当 android:orientation=“vertical” 时, 只有水平方向的设置才起作用,垂直方向的设置不起作用。 即:left,right,center_horizontal 是生效的。 当 android:orientation=“horizontal” 时, 只有垂直方向的设置才起作用,水平方向的设置不起作用。 即:top,bottom,center_vertical 是生效的。

然而,这方法好像并没有什么卵用。比如: 如果只能竖直方向设置左右对齐的话,就会出现下面的效果:

所以还是推荐RelativeLayout!相对布局

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/322309.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号