目录
TextView
- android:gravity指定文字的对齐方式
EditView
- andorid:hint指定一段提示文本
可见属性:visibility
- visible:(默认值)
- invisible:组件不可见,但是占据原来的大小和空间
- gone:不仅不可见,不占用任何空间
LinearLayout
- 线性布局,分为vertical和horizontal两种
- 如果布局是vertical,那么组件的高度就不能是match_parent,如果布局是horizontal,那么组件的宽度就不能是match_parent
- andorid:layout_gravity指定控件在布局中的对齐方式
- andorid:layout_weight指定控件的大小所占的比例
RelativeLayout
- 相对布局,通过相对定位的方式让控件出现在布局的任何位置
- andorid:layout_above
- andorid:layout_below
- andorid:toLeftOf
- andorid:toRightOf
FrameLayout
- 所有控件默认摆放在布局的左上角
控件和布局的继承结构
- 所有控件都是直接或间接继承自View,所有的布局都是直接或间接继承自ViewGroup
- View是一种基本的UI组件,可以在屏幕上绘制一块矩形区域,并能响应区域中的各种事件
- ViewGroup则是一种特殊的View,包含很多子View和子ViewGroup
ListView
- 借助适配器完成数据的传递
- 自定义一个适配器继承自ArrayAdapter,需要重写getView()方法,该方法在每个子项被滚动到屏幕内的时候被调用,并返回一个填充好数据的View对象
- 效率问题:
- 每次都都将布局重新加载,成为性能瓶颈(使用convertView缓存布局)
- 每次都通过findViewById()方法获取控件实例(ViewHolder缓存控件)
RecyclerView
- 定义内部类ViewHolder,继承自RecyclerView.ViewHolder
- 重写三个方法:
- onCreateViewHolder():创建ViewHolder实例
- onBindViewHolder():对RecyclerView子项的数据进行赋值,会在每个子项被滚动到屏幕内的时候执行
- -getItemCount():一共有多少子项
- 需要自己对子项具体的View注册点击事件