- ConstraintLayout约束布局学习
- Ui属性
android:id给当前控件定义了一个唯一标识符
android:layout_width和android:layout_height指定了控件的宽度和高度
android:gravity来指定文字的对齐方式
android:textColor属性可以指定文字的颜色
android:textSize属性可以指定文字的大小。文字大小要使用sp作为单位。
android:textAllCaps="false"保留你指定的原始文字内容
android:hint属性指定了一段提示性的文本
android:maxLines指定了EditText的最大行数
android:src给ImageView指定了一张图片资源
android:visibility控件的可见属性:visible、invisible、gone
android:background用于为布局或控件指定一个背景
- 现在最主流的手机屏幕分辨率大多是xxhdpi
- LinearLayout又称作线性布局
android:orientation属性指定了排列方向vertical(垂直)horizontal(水平)
android:layout_gravity用于指定控件在布局中的对齐方式
layout_weight权重
- android:gravity用于指定文字在控件中的对齐方式,而android:layout_gravity用于指定控件在布局中的对齐方式
- 可以通过layout_weight和wrap_content组合适配
- RelativeLayout又称作相对布局
android:layout_above属性可以让一个控件位于另一个控件的上方
android:layout_toLeftOf表示让一个控件位于另一个控件的左侧
android:layout_toRightOf表示让一个控件位于另一个控件的右侧
android:layout_alignLeft表示让一个控件的左边缘和另一个控件的左边缘对齐
android:layout_alignRight表示让一个控件的右边缘和另一个控件的右边缘对齐
- FrameLayout的应用场景相对偏少一些,使用Fragment的时候我们还是可以用到它的
- include可以引用布局
- Kotlin中的类型强制转换使用的关键字是as
- repeat函数是Kotlin中另外一个非常常用的标准函数,它允许你传入一个数值n,然后会把Lambda表达式中的内容执行n遍
- Kotlin中使用inner class关键字来定义内部类
- ListView优化
1.通过getView()方法中还有一个convertView参数,这个参数用于将之前加载好的布局进行缓存,以便之后进行重用
2.借助一个ViewHolder来对控件进行缓存,然后调用View的setTag()方法,将ViewHolder对象存储在View中
3.当convertView不为null的时候,则调用View的getTag()方法,把ViewHolder重新取出。这样所有控件的实例都缓存在了ViewHolder里,就没有必要每次都通过findViewById()方法来获取控件实例了。
- RecyclerView的Adapter继承的Viewholder是自己定义的holder
- RecyclerView需要指定LayoutManager布局
除了LinearLayoutManager之外,RecyclerView还给我们提供了GridLayoutManager和StaggeredGridLayoutManager这两种内置的布局排列方式。GridLayoutManager可以用于实现网格布局,StaggeredGridLayoutManager可以用于实现瀑布流布局。
- 只有在单例类、companion object或顶层方法中才可以使用const关键字
- 延迟初始化使用的是lateinit关键字,它可以告诉Kotlin编译器,我会在晚些时候对这个变量进行初始化,这样就不用在一开始的时候将它赋值为null了。
- ::adapter.isInitialized可用于判断adapter变量是否已经初始化