Android | Layout中XML文件(二)布局管理器

〇、总述

        为了更好地管理Android应用的用户界面的各个组件,Android提供了布局管理器。布局管理器根据运行平台来调整组件的大小,开发时只需要为容器选择合理的布局管理器即可。Android的布局管理器本身既是一个UI组件所有的布局管理器都是ViewGroup的子类。所有的布局都可以当作容器类使用,布局管理器也可以相互嵌套。

 一、LinearLayouyt

        线性布局,可以将放入其中的组件水平(horizontal)或垂直(vertical,默认值)排布。线性布局不会换行,会将所有组件挨个排列起来,剩下的组将将不会被显示。

         除上述属性,LinearLayout的子元素还可额外指定:

android:layout_gravity

android:layout_weight

        其中,android:layout_gravity属性用于设置该子元素在父容器中的对齐方式,而对于一个容器来说,android:gravity用于控制其所包含的子元素的对齐方式。

        android:layout_weight用于定义一个线性布局中某组件的重要程度。所有的组件都有一个 layout_weight 值,默认为 0。意思是需要显示多大的视图就占据多大的屏幕空间。若赋值为大于 0 的值,则将可用的空间分割,分割的大小取决于当前的 layout_weight 数值与其他空间的 layout_weight 值的比率。

二、TableLayout

        表格布局,该布局继承了LinearLayout,本质依然是线性布局。每次向TableLayout添加一个TableRow,该表格就添加一行。TableRow即一个表格行,本身也是容器。列宽度则由该列中最宽的单元格决定。

        TableLayout 布局提供了几个特殊属性,可以实现以下特殊效果:

  • android:shrinkColumns 属性:该属性用于设置可收缩的列。当可收缩的列太宽以至于布局内的其他列不能完全显示时,可收缩列会纵向延伸,压缩自己所占的空间,以便于其他列可以完全显示出来。android:shrinkColumns="1" 表示将第 2 列设置为可收缩列,列数从 0 开始。
  • android:stretchColumns 属性:该属性用于设置可伸展的列。可伸展的列会自动扩展长度以填满所有可用空间。android:stretchColumns="1" 表示将第 2 列设置为可伸展的列。
  • android:collapseColumns 属性:该属性用于设置隐藏列。android:collapseColumns="1" 表示将第 2 列隐藏不显示。

 三、FrameLayout

        帧布局,指定屏幕上一块空白区域,在该区域中填充一个单一对象。在开发过程中在可以通过组件的 android:layout_gravity 属性对组件位置进行适当的修改。

四、 RelativeLayout

        相对布局,以一种让组件以相对于容器或者相对于容器中的另一个组件的相对位置进行放置的布局方式。支持如下属性设置:

         下表中的属性参数是Boolean型的,只能为true或是false:

         下表中的属性参数只能是其他组件的ID:

 五、GridLayout

        网格布局,是Android4.0之后新增的布局类型, 把整个容器分为row × column个网格。网格中的组件可以单行单列显示,也可以跨行跨列显示。

六、AbsoluteLayout

        绝对布局,不提供任何布局控制,在开发时只能通过X、Y坐标来控制组件的位置,此时的布局容器不会再管理子组件的位置、大小。每个子组件可以通过下述属性来控制坐标位置:

android:layout_x

android:layout_y

七、WebView

        Web页面显示组件。是AbsoluteLayout 的子类。使用该组件需要在AndroidManifest.xml 文件中添加 Internet 访问权限:

<uses-permission android:name="android.permission.INTERNET" />

        在具体的Activity中使用如下代码创建Web显示页面:

    private WebView webView;
    String url = "https://www.csdn.net/";

    @Override
    public void onCreate(Bundle saveInstanceState) {
        super.onCreate(saveInstanceState);
        setContentView(R.layout.main);
        webView = (WebView) findViewById(R.id.webView1);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl(url);
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值