设为首页 加入收藏

TOP

Kotlin入门(19)Android的基础布局(一)
2019-09-01 23:13:44 】 浏览:60
Tags:Kotlin 入门 Android 基础 布局

线性布局
线性布局LinearLayout是最常用的布局,顾名思义,它下面的子视图像是用一根线串了起来,所以其内部视图的排列是有顺序的,要么从上到下垂直排列,要么从左到右水平排列。排列顺序只能指定一维方向的视图次序,可是手机屏幕是个二维的平面,这意味着还剩另一维方向需要指定视图的对齐方式。故而线性布局主要有以下两种属性设置方法:
1. setOrientation: 设置内部视图的排列方向。LinearLayout.HORIZONTAL表示水平布局,LinearLayout.VERTICAL表示垂直布局。
2. setGravity: 设置内部视图的对齐方式。Gravity.LEFT表示靠左对齐、Gravity.RIGHT表示靠右对齐、Gravity.TOP表示靠上对齐、Gravity.BOTTOM表示靠下对齐、Gravity.CENTER表示居中对齐。
空白距离margin和间隔距离padding是另外两个常见的视图概念,margin指的当前视图与周围视图的距离,而padding指的是当前视图与内部视图的距离。这么说可能有些抽象,接下来还是做个实验,看看它们的显示效果到底有什么不同。下面是个实验用的布局文件内容,通过背景色观察每个视图的区域范围:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <!-- 外层布局的背景色是蓝色 -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:background="#00aaff" >
        <!-- 中间布局的背景色是黄色 -->
        <LinearLayout
            android:id="@+id/ll_margin"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#ffff99" >
            <!-- 内层视图的背景色是红色 -->
            <View
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#ff0000" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

 

与上述布局文件对应的页面Kotlin代码如下,根据不同的按钮分别设置不同方向上的margin和padding数值:

//该页面用于演示margin和padding的区别
class LinearLayoutActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_linear_layout)
        //设置ll_margin内部视图的排列方式为水平排列
        ll_margin.orientation = LinearLayout.HORIZONTAL
        //设置ll_margin内部视图的对齐方式为居中对齐
        ll_margin.gravity = Gravity.CENTER
        btn_margin_vertical.setOnClickListener {
            //Kotlin对变量进行类型转换的关键字是as
            val params = ll_margin.layoutParams as LinearLayout.LayoutParams
            //setMargins方法为设置该视图与外部视图的空白距离
            //此处设置左边和右边的margin空白距离为50dp
            params.setMargins(0, dip(50), 0, dip(50))
            ll_margin.layoutParams = params
        }
        btn_margin_horizontal.setOnClickListener {
            val params = ll_margin.layoutParams as LinearLayout.LayoutParams
            //此处设置顶部和底部的margin空白距离为50dp
            params.setMargins(dip(50), 0, dip(50), 0)
            ll_margin.layoutParams = params
        }
        //setPadding方法为设置该视图与内部视图的间隔距离
        btn_padding_vertical.setOnClickListener {
            //此处设置左边和右边的padding间隔距离为50dp
            ll_margin.setPadding(0, dip(50), 0, dip(50))
        }
        btn_padding_horizontal.setOnClickListener {
            //此处设置顶部和底部的padding间隔距离为50dp
            ll_margin.setPadding(dip(50), 0, dip(50), 0)
        }
    }
}

依据页面代码例子,Kotlin代码与Java代码的写法有以下三点区别:

1. Kotlin允许对属性orientation直接赋值,从而取代了setOrientation方法;类似的还有属性gravity取代了setGravity方法;
2. Kotlin使用关键字as进行变量的类型转换;
3. Kolin支持调用dip方法将dip数值转换为px数值,倘若由Java编码则需开发者自己实现一个像素转换的工具类;
因为dip方法来自于Kotlin扩展的Anko库,所以需要在Activity代码头部加上下面一行导入语句:

import org.jetbrains.anko.dip

 

既然用到了Anko库,自然要修改模块的build.gradle,在dependencies节点中补充下述的anko-common包编译配置:

    compile "org.jetbrains.anko:anko-common:$anko_version"

&

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇How to deploy kotlin in android.. 下一篇【Android开发艺术探索】Activity..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目