布局技巧与列表控件

布局技巧与列表控件


五大布局


FrameLayout(框架布局)、LinearLayout(线性布局)、RelativeLayout(相对布局)、TableLayout(表格布局)、AbsoluteLayout(绝对布局)。


视图的创建


在Android系统中,何的可视化控件都是从android.view.View继承的。开发人员可以使用两种方法来创建视图。

第一种:是使用XML方式来配置View的相关属性,然后装载这些View

第二种:是完全使用java代码来创建View


长度单位


px:表示屏幕实际的象素。

dp(dip):是屏幕的物理尺寸。大小为1英寸的1/72。

sp(与刻度无关的像素):与dp类似,但是可以根据用户的字体大小首选项进行缩放。

设置表示长度、高度等属性时可以使用dp或sp。但如果设置字体,需要使用sp。

dp是与密度无关,sp除了与密度无关外,还与scale无关

如果使用dp和sp,系统会根据屏幕密度的变化自动进行转换。


布局中常用属性


android:gravity与 android:layout_gravity的区别

android:layout_gravity是指定本元素相对它的父元素的对齐方式。比如一个button 在linearlayout里,你想把该button放在linearlayout里靠左、靠右等位置就可以通过该属性设置。

android:gravity是指定本元素的子元素相对它的对齐方式。属性是对该view中内容的限定.比如一个button 上面的text. 你可以设置该text 相对于view的靠左,靠右等位置。android:gravity="top"(buttom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical、clip_horizontal)控制布局中控件的对齐方式。如果是没有子控件的控件设置此属性,表示其内容的对齐方式,比如说TextView里面文字的对齐方式;若是有子控件的控件设置此属性,则表示其子控件的对齐方式,如果需要设置多个属性值,用“|”进行组合

Relativelayout中的相对位置属性

第一类 : 属性值为 true 或 false

android:layout_centerVertical 垂直居中

android:layout_centerInparent 相对于父元素完全居中

android:layout_alignParentBottom 贴紧父元素的下边缘

android:layout_alignParentLeft 贴紧父元素的左边缘

android:layout_alignParentRight 贴紧父元素的右边缘

android:layout_alignParentTop 贴紧父元素的上边缘

android:layout_alignWithParentIfMissing 若找不到兄弟元素以父元素做参照物

第二类:属性值必须为 id 的引用名“ @id/id-name ”

android:layout_below 在某元素的下方

android:layout_above 在某元素的上方

android:layout_toLeftOf 在某元素的左边

android:layout_toRightOf 在某元素的右边

android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐

android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐

android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐

android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐

第三类:属性值为具体的像素值,如 30dip , 40px

android:layout_marginBottom 离某元素底边缘的距离

android:layout_marginLeft 离某元素左边缘的距离

android:layout_marginRight 离某元素右边缘的距离

android:layout_marginTop 离某元素上边缘的距离 


无比重要的ListView


1.ListVeiw:用来展示列表的View。

2.适配器:用来把数据映射到ListView上的中介。

3.数据: 具体的将被映射的字符串,图片,或者基本组件。

根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter

其中以ArrayAdapter最为简单,只能展示一行字。SimpleAdapter有最好的扩充性,可以自定义出各种效果。 SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方面的把数据库的内容以列表的形式展示出来。

ArrayAdapter的 构造需要三个参数,依次为上下文,布局文件,数据源。同时 用setAdapter()完成适配的最后工作。


ListView优化


复用

防止convertView多次加载:

if(converView==null){

converView = mLayoutInflater.inflate(R.layout.xxx.xml,null);

重写ViewHolder

每次在getVIew的时候,都需要重新的findViewById,重新找到控件,然后进行控件的赋值以及事件相应设置。这样其实在做重复的事情,因为的geiview中,其实包含有这些控件,而且这些控件的id还都是一样的,也就是其实只要在view中findViewById一次,后面无需要每次都要findViewById了。

写发的特点,通常有一个内部类classViewHolder,这个ViewHolder,用来标识view中一些控件,方便进行一些事件相应操作的设置,比如onClick等等,这样可以不用每次都要findViewById了,减少了性能的消耗。同时重用了convertView,很大程度上的减少了内存的消耗。


ListView常用属性、方法


属性

Android:listSelector="@android:color/transparent"

属性说明:当item被点击后,改变item的背景颜色(取值范围包括图片),上面设置的是透明的,代表取消android:listSelector的效果,。

android:scrollingCache="false"

android:cacheColorHint="#00000000"

属性说明:当列表数据太多拖动listView时,会发现背景变黑,这是因为listView自带的缓存导致,设置上面的任意一个属性,即可避免这种情况

android:fadingEdge="none"

属性说明:滚动listview时,上边和下边有黑色的阴影,当值为none时代表去掉阴影

android:divider="@drawable/list_diriver_bg"

属性说明:listview item之间的分割线设置(可以是图片,可以是颜色),当值为@null 时代表没有分割线

android:dividerHeight="3dp"

属性说明:listview item之间的分割线高度

android:fastScrollEnabled="true"

属性说明:当listview数据太多时,开启快速滑动,true代表开启

方法

addHeaderView

addFooterView

你可能感兴趣的:(布局技巧与列表控件)