前言
在上篇文章,我们讲过了RadioButton
的基本使用,这节让我们来学习下线性布局LinearLayout
的相关知识。
今天涉及知识点:
- kotlin设置布局属性的一些变化
- anko库像素相关方法表
- Activity中设置布局的代码
- 效果图和项目结构图
- LayoutHelper类源码
先来波效果图:

更多精彩内容,请关注微信公众号 "Android进击",大家一起来学习进步吧
一. kotlin设置布局属性的一些变化
kotlin中已经很少有set/get
方法了。例如设置LinearLayout
的方向可以直接这样:
//设置线性布局的方向(注:ll_inner为布局中LinearLayout的id)
ll_inner.orientation= LinearLayout.HORIZONTAL
然后设置LinearLayout
中子控件内部居中的话,可以这样:
//设置布局内部控件居中(注:ll_inner为布局中LinearLayout的id)
ll_inner.gravity= Gravity.CENTER
kotlin 使用关键字 as
来表示类型强转,然后用this@MainActivity
来表示MainActivity.this
二.anko库像素相关方法表
由于anko
库的加持(当然,你需要在你项目中引入anko
库),在kotlin
中dp
,sp
,px
间的相互转换也变得简单起来,例如dip(50)
表示将50dp
转为50px
.具体对照表如下:
Anko 库单位转换方法 |
说明 |
---|---|
dip | 将dp 转成以px 为单位的数值 |
sp | 将sp 转成以px 为单位的数值 |
px2dip | 将px 转成以dip 为单位的数值 |
px2sp | 将px 转成以sp 为单位的数值 |
dimen | 将dip 转成以sp 为单位的数值 |
三. Activity中设置布局的代码
下面让我们来看看LinearLayout
动态布局在Activity
中使用的示例。
MainActivity
代码如下,其中LayoutHelper
类封装了对于布局控件的设置:
open class MainActivity : AppCompatActivity(),View.OnClickListener{
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_test)
init()
initData()
setListener()
}
private fun init(){
//开启调试
LogUtil.setDebug(true)
}
private fun initData(){
//初始化设置布局方向和子空间居中
LayoutHelper.initLayout(ll_inner)
}
private fun setListener(){
btn_1.setOnClickListener(this)
btn_2.setOnClickListener(this)
btn_3.setOnClickListener(this)
btn_4.setOnClickListener(this)
}
override fun onClick(v: View) {
when (v.id) {
R.id.btn_1 -> LayoutHelper.setBtn1Layout(ll_inner,this@MainActivity)
R.id.btn_2 -> LayoutHelper.setBtn2Layout(ll_inner,this@MainActivity)
R.id.btn_3 -> LayoutHelper.setBtn3Layout(ll_inner,this@MainActivity)
R.id.btn_4 -> LayoutHelper.setBtn4Layout(ll_inner,this@MainActivity)
}
}
}
对应的布局文件activity_test.xml
代码如下:
<?xml version="1.0" encoding="utf-8"?>
<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="@color/white">
<LinearLayout
android:id="@+id/ll_inner"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/green">
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/red"/>
</LinearLayout>
</LinearLayout>
<Button
android:id="@+id/btn_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:textColor="@color/black"
android:text="1" />
<Button
android:id="@+id/btn_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:textColor="@color/black"
android:text="2" />
<Button
android:id="@+id/btn_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:textColor="@color/black"
android:text="3" />
<Button
android:id="@+id/btn_4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:textColor="@color/black"
android:text="4" />
</LinearLayout>
四. 效果图和项目结构图


五. LayoutHelper类源码
LayoutHelper
源码如下:
网友评论