美文网首页
布局技巧与列表控件

布局技巧与列表控件

作者: 王汪汪233 | 来源:发表于2016-05-23 09:26 被阅读0次

    布局技巧与列表控件

    五大布局


    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

    相关文章

      网友评论

          本文标题:布局技巧与列表控件

          本文链接:https://www.haomeiwen.com/subject/yrrarttx.html