当前位置: 首页 > news >正文

ListView的属性详解和探究

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

在我们的日常开发中,ListView是一个最常用的组件,所以我们非常有必要对它的属性进行全面的了解。现在就以一个简单的实例,对ListView的属性做一个简单的讲解。           

       首先我们给出简单的布局文件,就一个简单的ListView列表        :                 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#FFE1FF" 
    android:orientation="vertical" > 
    <ListView 
        android:id="@+id/listView1" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" /> </LinearLayout>

     

       Activity文件,使用ArrayAdapter对列表进行填充        :                 

public class MainActivity extends Activity { 
    private ListView listView; 
 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
 
        listView = (ListView) findViewById(R.id.listView1); 
        final List<String> adapterData = new ArrayList<String>(); 
        for (int i = 0; i < 20; i++) { 
           adapterData.add("ListItem" + i); 
        } 
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
        android.R.layout.simple_list_item_1, adapterData); 
        listView.setAdapter(adapter); 
     } 
}

     

       运行效果如下        :                 

                       

       接下来我们在布局的ListView中添加如下属性,并演示其效果        。                 

         

                 1.                      android:            stackFromBottom属性:                                      在ListView和GridView中使用,使它们的内容从底部开始显示        。                 

                布局文件修改如下        :                 

<ListView 
     android:id="@+id/listView1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:stackFromBottom="true" />

     

运行效果如下,列表在开始的时候,内容就从底部开始显示:           

     

                                             

                 2.android:          transcriptMode属性:                    设置列表的      transcriptMode模式,该模式指定列表      添加新的选项的时候,是否自动滑动到底部,显示新的选项。           

                   disabled:取消transcriptMode模式,默认的                 

                   normal:当接受到数据集合改变的通知,并且仅仅当最后一个选项已经显示在屏幕的时候,自动滑动到底部        。                 

                   alwaysScroll:无论当前列表显示什么选项,列表将会自动滑动到底部显示最新的选项        。                 

       布局修改如下        :                 

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:stackFromBottom="true" 
    android:transcriptMode="alwaysScroll" />

     

       Activity文件代码如下        :                 

public class MainActivity extends Activity { 
    private ListView listView; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
        listView = (ListView) findViewById(R.id.listView1); 
        final List<String> adapterData = new ArrayList<String>(); 
        for (int i = 0; i < 20; i++) { 
          adapterData.add("ListItem" + i); 
        } 
        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
        android.R.layout.simple_list_item_1, adapterData); 
        listView.setAdapter(adapter); 
 
        //定时给列表添加新的选项,并通知列表更新 
        final Handler handler = new Handler(); 
        Timer timer = new Timer(); 
        timer.scheduleAtFixedRate(new TimerTask() { 
            @Override 
            public void run() { 
                adapterData.add("New ListItem"); 
                handler.post(new Runnable() { 
                @Override 
                public void run() { 
                    adapter.notifyDataSetChanged(); 
                }
            });  
        } 
    }, 3000, 3000); }

         运行结果如下      :               

     

6秒后的结果(每当添加新的表项的时候,列表自动滑动的底部显示最新的表项)           

     

       其它两个normal和disable属性就不在演示,如上已经解释的比较清楚,大家可以自己试验感受一下        。                 

                                             

                 3.          android:cacheColorHint属性:                            该属性在官方文档和个资料中找不到比较好的描述;根据实际的体验,当你设置的ListView的背景时,应该设置该属性为“#00000000”(透明),        不然在滑动的时候,列表的颜色会变黑或者背景图片小时的情况        !                 

                                             

                 4.                      android:            divider属性:                                      列表之间绘制的颜色或者图片。一般开发中用于分隔表项        。                 

       在实际开发过程中,如果你不想要列表之间的分割线,可以设置属性为@null ,布局文件如下        :                 

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:divider="@null" />

     

       运行结果如下        :                 

     

                                                                     

                             5.android:            fadingEdge属性:                                      设置列表的阴影                 

       布局文件如下        :                 

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/ic_launcher" 
    android:cacheColorHint="#000000ff" 
    android:fadingEdge="vertical"  
    android:fadingEdgeLength="40dp"/>

     

                 运行效果如下          :                           

     

                                             

                 6.          android:fastScrollEnabled属性:                    启用快速滑动条,它能快速的滑动列表。      但在实际的测试中发现,当你的数据比较小的时候,是不会显示快速滚动条。           

       布局文件如下        :                 

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fastScrollEnabled="true" />

     

       运行结果如下(当你快速滑动列表的时候,就出现如下快速滑动滚动条        ):                 

     

                                             

                 7.android          :                      listSelector                                属性:                                      用来指明列表当前选中的选项的图片                        

       布局文件如下        :                 

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:listSelector="@drawable/ic_launcher" />

     

运行结果如下(当用手指点击ListItem3的时候,出现如下效果,图片显示在ListItem3的底部,并未遮挡ListItem3):           

     

                                             

                 8.android:                      drawSelectorOnTop属性:                                      当设置为true时候,listSelector的图片将会被绘制在被选中的选项之上        。                 

       布局文件如下        :                 

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:drawSelectorOnTop="true" 
    android:listSelector="@drawable/ic_launcher" />

     

运行结果如下(对比上面,发现图片遮挡了ListItem3的显示):           

     

                                                                     

                             9.android:            choiceMode属性:                                      定义了列表的选择行为,默认的情况下,列表没有选择行为        。                 

       none:正常不指定选择的列表                 

       singleChoice:列表允许一个选择                 

       multipleChoice:列表允许选择多个                 

       mutipleChoiceModal        :                 

       布局文件如下        :                 

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:choiceMode="multipleChoice" />

     

                 Activity文件如下          :                           

public class MainActivity extends Activity { 
    private ListView listView; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
        listView = (ListView) findViewById(R.id.listView1); 
        final List<String> adapterData = new ArrayList<String>(); 
        for (int i = 0; i < 40; i++) { 
            adapterData.add("ListItem" + i); 
        } 
        //只有使用支持选择的布局才能选择多项 
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
android.R.layout.simple_list_item_checked, adapterData); 
        listView.setAdapter(adapter); 
        listView.setFastScrollEnabled(true); 
    } 
}

     

                 运行结果如下(点击多个选项          ),          关于nono和singleChoice可以自己尝试一下          :                           

     


转载于:https://my.oschina.net/u/2531348/blog/616032

相关文章:

  • Javascript模块化编程(三):require.js的用法
  • 《Node.js入门》CentOS 6.5下Node.js Web开发环境搭建笔记
  • Xms Xmx PermSize MaxPermSize 区别
  • ssh 远程登陆 refuse
  • 使用Flexible实现手淘H5页面的终端适配的注意事项
  • Installing and Using Standby Statspack in 11g
  • 美国:《网络安全国家行动计划》(2016年2月)
  • CentOS 目录结构
  • php7安装笔记,个人零时笔记
  • ioS开发知识(二十八)
  • 单例模式里面必须要知道的事情
  • 保留两位小数
  • Spring-boot 启动时碰到的错误
  • 开源监控解决方案Nagios+Cacti+PNP4Nagios+NConf+NDOUtils+Nagvis(三)pnp4nagios安装
  • 利用Python进行文章特征提取(二)
  • JS 中的深拷贝与浅拷贝
  • C++入门教程(10):for 语句
  • HTTP中GET与POST的区别 99%的错误认识
  • java8 Stream Pipelines 浅析
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • mysql中InnoDB引擎中页的概念
  • python学习笔记-类对象的信息
  • Redux 中间件分析
  • TypeScript迭代器
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 应用生命周期终极 DevOps 工具包
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • # 安徽锐锋科技IDMS系统简介
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (WSI分类)WSI分类文献小综述 2024
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (力扣题库)跳跃游戏II(c++)
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (转) Android中ViewStub组件使用
  • (转载)PyTorch代码规范最佳实践和样式指南
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • *p++,*(p++),*++p,(*p)++区别?
  • .Net core 6.0 升8.0
  • .net core控制台应用程序初识
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • @EventListener注解使用说明
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [ C++ ] STL---仿函数与priority_queue
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——
  • [20181219]script使用小技巧.txt
  • [AIGC 大数据基础]hive浅谈
  • [Android]Android P(9) WIFI学习笔记 - 扫描 (1)
  • [Android]如何调试Native memory crash issue
  • [Android学习笔记]ScrollView的使用
  • [Angular] 笔记 20:NgContent