listView布局

合集下载

WPF布局篇--ViewBox布局

WPF布局篇--ViewBox布局

WPF布局篇--ViewBox布局前⾔ViewBox的作⽤是能够缩放位于其中的控件,以达到更好的展⽰效果;如果做过winform架构应⽤开发,其进⾏布局时,经常会有⼀个问题,当容器内部的控件超过容器的宽度,控件要么被遮盖、要么被裁剪,很难达到预期的显⽰效果,⽽且因winform的界⾯控件都是通过拖拽来进⾏布局,属于静态布局,很难做到响应式布局,⽽WPF中的ViewBox则很好的完善了winfrom在这⽅⾯布局中的不⾜,ViewBox常常与其他布局控件组合使⽤,来达到较好界⾯效果;1. ViewBox 进⾏布局以下代码⽰例,将⼀个表格放在Viewbox中,来达到同步缩放的效果:1 <Viewbox>2 <ListView Height="Auto" ScrollViewer.HorizontalScrollBarVisibility="Auto" >3 <ListView.View>4 <GridView>5 <GridViewColumn Width="60">6 <CheckBox>全选</CheckBox>7 <GridViewColumn.CellTemplate>8 <DataTemplate>9 <CheckBox IsChecked="False" />10 </DataTemplate>11 </GridViewColumn.CellTemplate>12 </GridViewColumn>13 <GridViewColumn Header="设备名称" Width="60"></GridViewColumn>14 <GridViewColumn Header="型号" Width="60"></GridViewColumn>15 <GridViewColumn Header="灵敏度" Width="60"></GridViewColumn>16 <GridViewColumn Width="60">17 <CheckBox>采样率</CheckBox>18 </GridViewColumn>19 <GridViewColumn Width="60">20 <CheckBox>分辨率</CheckBox>21 </GridViewColumn>22 <GridViewColumn Width="70">23 <CheckBox>输⼊⽅式</CheckBox>24 </GridViewColumn>25 <GridViewColumn Width="70">26 <CheckBox>同步⽅式</CheckBox>27 </GridViewColumn>28 <GridViewColumn Width="70">29 <CheckBox>加密⽅式</CheckBox>30 </GridViewColumn>31 <GridViewColumn Width="60">32 <CheckBox>秘钥</CheckBox>33 </GridViewColumn>34 <GridViewColumn Width="80">35 <CheckBox>触发⽅式</CheckBox>36 </GridViewColumn>37 <GridViewColumn Width="70">38 <CheckBox>负延迟(s)</CheckBox>39 </GridViewColumn>40 <GridViewColumn Width="85">41 <CheckBox>采集时长(s)</CheckBox>42 </GridViewColumn>43 <GridViewColumn Width="70">44 <CheckBox>触发次数</CheckBox>45 </GridViewColumn>46 </GridView>47 </ListView.View>48 </ListView>49 </Viewbox>界⾯效果如下,当界⾯的⼤⼩变化时,界⾯中的表格会同步进⾏缩放,⽽不会被遮盖或裁剪:ViewBox中最多只能放⼀个控件,其与其他控件组合使⽤,可以达到较好的效果,动⼿测试使⽤,体会会更深;。

【转】Android布局优化之ViewStub

【转】Android布局优化之ViewStub

【转】Android布局优化之ViewStubViewStub是Android布局优化中⼀个很不错的标签/控件,直接继承⾃View。

虽然Android开发⼈员基本上都听说过,但是真正⽤的可能不多。

ViewStub可以理解成⼀个⾮常轻量级的View,与其他的控件⼀样,有着⾃⼰的属性及特定的⽅法。

当ViewStub使⽤在布局⽂件中时,当程序inflate布局⽂件时,ViewStub本⾝也会被解析,且占据内存控件,但是与其他控件相⽐,主要区别体现在以下⼏点:1.当布局⽂件inflate时,ViewStub控件虽然也占据内存,但是相相⽐于其他控件,ViewStub所占内存很⼩;2.布局⽂件inflate时,ViewStub主要是作为⼀个“占位符”的性质,放置于view tree中,且ViewStub本⾝是不可见的。

ViewStub中有⼀个layout属性,指向ViewStub本⾝可能被替换掉的布局⽂件,在⼀定时机时,通过viewStub.inflate()完成此过程;3.ViewStub本⾝是不可见的,对ViewStub setVisibility(..)与其他控件不⼀样,ViewStub的setVisibility 成View.VISIBLE或INVISIBLE如果是⾸次使⽤,都会⾃动inflate其指向的布局⽂件,并替换ViewStub本⾝,再次使⽤则是相当于对其指向的布局⽂件设置可见性。

这⾥需要注意的是:1.ViewStub之所以常称之为“延迟化加载”,是因为在教多数情况下,程序⽆需显⽰ViewStub所指向的布局⽂件,只有在特定的某些较少条件下,此时ViewStub所指向的布局⽂件才需要被inflate,且此布局⽂件直接将当前ViewStub替换掉,具体是通过viewStub.infalte()或viewStub.setVisibility(View.VISIBLE)来完成;2.正确把握住ViewStub的应⽤场景⾮常重要,正如如1中所描述需求场景下,使⽤ViewStub可以优化布局;3.对ViewStub的inflate操作只能进⾏⼀次,因为inflate的时候是将其指向的布局⽂件解析inflate并替换掉当前ViewStub本⾝(由此体现出了ViewStub“占位符”性质),⼀旦替换后,此时原来的布局⽂件中就没有ViewStub控件了,因此,如果多次对ViewStub进⾏infalte,会出现错误信息:ViewStub must have a non-null ViewGroup viewParent。

周次 - 全国高职高专教育教师培训联盟

周次 - 全国高职高专教育教师培训联盟

周次时间培训内容授课方式培训老师培训第1周第1天1.Android发展史介绍2.Android平台框架介绍3.搭建JDK环境4.搭建Android开发环境5.环境配置6.创建AVD详解7.创建Android第一个项目8.运行Android应用程序9.介绍Android应用程序结构及文件中的作用10.介绍Android应用程序中AndroidManifest.xml文件11.介绍Eclipse开发工具中的DDMS作用12.介绍如何调试Android应用程序13.如何在程序中输出Log日志14.介绍在控制台显示日志信息讲练结合唐亮第2天15.XML文件特点16.Android线性布局17.Android文本框控件(TextView)18.Android文本编辑框控件(EditText)19.Android按钮Button20.介绍Android控制距离属性Margin和Padding21.Margin和Padding属性的区别22.介绍LinearLayout中的权重23.介绍使用图片资源讲练结合唐亮第3天24.Android表格布局25.Android帧布局26.Android相对布局27.Android网格布局讲练结合唐亮第4天28.Android绝对布局29.ImageView视图控件30.Button按钮的点击事件31.视图控件点击事件32.横纵屏幕切换33.使用selector配置34.使用androidstyle讲练结合唐亮第5天35.CheckBox控件36.RadioButton控件37.ToggleButton控件38.使用Activity39.Activity的声明周期40.Activity的启动与关闭41.Activity的管理讲练结合唐亮培训第2周第1天42.42.BMI指数项目实践(1)通过XML构建出布局文件;(2)设置计算按钮以及清空按钮的按钮事件;(3)限制输入内容为数字;(4)获取身高体重输入框的输入内容;(5)将得到的输入内容转换为数字参与运算;(6)将计算结果显示在新的页面中同时给出建议。

notifydatasetchanged 原理

notifydatasetchanged 原理

notifyDatasetchanged原理一、概述在Android开发中,notifyDataSetChanged是一个非常常用的方法,用于通知数据集合的变化,触发布局的刷新。

本文将深入探讨notifyDataSetChanged方法的原理,以及其在数据绑定和布局刷新中的作用。

二、notifyDataSetChanged的作用notifyDataSetChanged是BaseAdapter类提供的一个方法,用于通知数据集合发生了变化,需要重新加载布局。

该方法会触发ListView或RecyclerView等控件重新调用getView或onBindViewHolder方法,重新绑定数据。

三、内部实现原理notifyDataSetChanged方法内部实现的原理如下:1.首先,该方法会检查当前数据集合的版本号,即DataVersion。

2.然后,通过与先前版本的DataVersion进行比较,判断数据集合是否发生了变化。

3.如果数据集合发生了变化,ListView或RecyclerView会重新调用getView或onBindViewHolder方法,重新绑定数据,并更新布局。

四、notifyDataSetChanged的使用场景notifyDataSetChanged方法适用于以下情况:1.数据集合发生了增加、删除、修改等操作;2.数据集合中的对象发生了属性变化;3.数据集合需要动态刷新界面。

五、数据集合变化的判断方式notifyDataSetChanged方法内部通过比较数据集合的版本号来判断数据集合是否发生了变化,常见的判断方式有以下几种:1.对于ArrayList或Array等集合类,可以使用hashCode方法来判断集合是否相等。

当集合发生增删改操作时,其hashCode值将会发生改变。

2.对于自定义的数据集合,可以在数据发生变化时手动更新版本号。

可以通过一个计数器或者时间戳等方式,为数据集合添加一个版本号。

recyclerview用法

recyclerview用法

recyclerview用法RecyclerView 是 Android 中强大且灵活的列表组件,也是现今流行的 ListView 或 GridView 的替代者。

RecyclerView 中文意思是回收视图。

1. 主要特点- 支持垂直和水平方向的滑动布局;- 支持扩展的 ViewHolder,使用和数据绑定非常简单;- 支持扩展的类型,避免数据重复加载;- 支持添加拖动和划分;- 支持自定义的动画;- 支持触摸,并可定制和分解应用于界面;2. 使用方法- 首先将 RecyclerView 添加到布局文件中;- 初始化 RecyclerView,创建 LayoutManager,LayoutManager 将控制RecyclerView 的布局方式,常见的有 LinearLayoutManager 和 GridLayoutManager;- 设置 Adapter,Adapter 用于渲染数据;- 调用 setHasFixedSize(true) 方法,来启用 RecyclerView 在 RecyclerView 发生变化时避免重新计算每个子项的尺寸;- 最后将数据通过 Adapter 设置到 RecyclerView 上;3. 优点- RecyclerView 采用数据绑定的方式,可以把复杂的数据源和 UI 进行绑定,且加载数据相对 ListView 来说加载速度更快;- 采用 ViewHolder 来缓存-用作复用,可以大大减少渲染的步骤;- 更改数据的时候,采用了更高效的 Jiffy 类型,可以在后台线程中更新数据;- 具备排序、拖拽和分组等功能;4. 缺点- 没有现成的动画,需要重写 ItemAnimator 来实现动画;- 如果 Item 非常多的话,滑动起来会有一定的卡顿;- 对于层级比较深的布局,性能上可能会有些影响。

Android移动应用开发案例教程(慕课版)-课程大纲.docx[5页]

Android移动应用开发案例教程(慕课版)-课程大纲.docx[5页]
5.3.Intent和IntentFilter的解析
5.3.2 IntentFilter解析
5.3.3.案例2:手机浏览器启动APP开发
5.4.Activity的传值
5.4.1.Activity跳转时传递数据
5.4.2.获得Activity返回的数据
5.4.3.案例3:个人信息发送与接收APP开发
5.5.Activity的生命周期
八、Android的网络编程Volley和Gson框架
8.1学习目标
8.2 HTTP协议简介
8.3 Volley框架的使用
8.3.1 Volley框架的简介
8.3.2 Android中使用Volley
6.1.学习目标
6.2.ListView控件
6.2.1.ListView控件介绍
6.2.2.ListView控件的使用
6.2.3. ListView常用Adapter
6.2.4.案例1:使用ListView完成通讯录开发
6.3. BaseAdapter适配器
6.3.1. BaseAdapter适配器介绍
4.3.常用UI控件的应用
4.3.1.ImageView控件的使用
4.3.2.ImageButton控件的使用
4.3.3.ProgressBar控件的使用
4.3.4.案例2:Progressbar自定义菊花加载效果
4.4.Window与Dialog的应用
4.4.1.Toast控件的使用
4.4.2.PopupWindow的应用
4.4.3.AlertDialog的应用
4.4.4.案例3:用户登录协议确认功能开发
4.5.课程小结
4.6.课后练习
4.7.课堂笔记

RecyclerView使用详解

RecyclerView使⽤详解RecylerView介绍RecylerView是support-v7包中的新组件,是⼀个强⼤的滑动组件,与经典的ListView相⽐,同样拥有item回收复⽤的功能,这⼀点从它的名字recylerview即回收view也可以看出。

官⽅对于它的介绍则是:RecyclerView 是 ListView 的升级版本,更加先进和灵活。

RecyclerView通过设置LayoutManager,ItemDecoration,ItemAnimator实现你想要的效果。

使⽤LayoutManager来确定每⼀个item的排列⽅式。

使⽤ItemDecoration⾃⼰绘制分割线,更灵活使⽤ItemAnimator为增加或删除⼀⾏设置动画效果。

注意新建完项⽬,需要在app/build.gradle增加RecylerView依赖,不然找不到RecyclerView类compile 'com.android.support:recyclerview-v7:23.1.0'RecylerView简单的Demo我们来看activity代码,跟ListView写法差不多,只是这边多设置了布局管理器。

public class LinearLayoutActivity extends AppCompatActivity {private RecyclerView recyclerView;private RecyclerViewAdapter adapter;private List<String> datas;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.recycler_main);initData();recyclerView= (RecyclerView) findViewById(R.id.recyclerview);recyclerView.setLayoutManager(new LinearLayoutManager(this));//设置布局管理器recyclerView.addItemDecoration(new DividerItemDecoration(this));recyclerView.setAdapter(adapter=new RecyclerViewAdapter(this,datas));}private void initData(){datas=new ArrayList<>();for(int i=0;i<100;i++){datas.add("item:"+i);}}}activity对应的布局⽂件:recycler_main.xml<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><android.support.v7.widget.RecyclerViewandroid:id="@+id/recyclerview"android:layout_width="match_parent"android:layout_height="match_parent" /></RelativeLayout>adapter相对ListView来说变化⽐较⼤的。

wpf listview 用法

wpf listview 用法WPFLISTVIEW是一种用于显示数据项列表的控件。

下面是它的一些常见用法:- 添加一行数据:- 定义一个结构体:```csharpstruct mhAction{private string num;private string action;private string axis;private string pos;private string value;public mhAction(string v1, string v2, string v3, string v4, string v5) {this.num = v1;this.action = v2;this.axis = v3;this.pos = v4;this.value = v5;}}```- 添加一条数据到ListView:```csharplvActionEditList.Items.Add(new mhAction("0", "MOV", "8,9,10,11", "500,450,500,500", "0"));```- 绑定数据:```xaml<ListView x:Name="lvActionEditList" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" Grid.RowSpan="4" Margin="10"><ListView.View><GridView><GridViewColumn Header="序号" Width="40" DisplayMemberBinding="{Binding num}"/><GridViewColumn Header="动作" Width="100" DisplayMemberBinding="{Binding action}"/><GridViewColumn Header="轴" Width="100" DisplayMemberBinding="{Binding axis}"/><GridViewColumn Header="坐标" Width="200" DisplayMemberBinding="{Binding pos}"/><GridViewColumn Header="参数" Width="100" DisplayMemberBinding="{Binding value}"/></GridView></ListView.View></ListView>```- 居中显示数据:```xaml<Window.Resources><Style x:Key="ListViewItemStyle" TargetType="{x:Type ListViewItem}">。

一种现场可编程门阵列门延时精确调整时序的方法(fpga)_图概要

62航天返回与遥感SPACECRAFTll RECOVERY&R}:MOTE SENSING第3l卷第2期2010年4月一种现场可编程门阵列门延时精确调整时序的方法万昊包斌成桂梅(北京空间机电研究所,北京10(所6摘要通过FPGA(现场可编程门阵列时序模型分析得出FPGA门延时的方案,综合利用FPGA各种布局布线EDA工具,摸索出一套人工干预FPGA布局布线的方法,使FPGA门延时能够有效地用于时序调整,调整精度可达到纳秒级。

该方法具有不增加任何额外器件,成本低、高效方便的特点。

关键词现场可编程门阵列门延时时序调整中图分类号:V443+.5文献标识码:A文章编号:1009—8518(201002一0062—07A FPGA Based Gate Delay Precise Timing Adjust MethodWan Min Bao Bin Cheng Guimei(Beij吨Institute of Space Mechanics&Electricity,Beijing100076,ChinaAbstract The text get a timing methodby analyseFPGA timing model.In studying the FPGA EDA tools,author explore a manual intervene layoutand muting method.We Can use it to adjust availably in nanosecond础.This method have a character for not adding extra component,low cost,hi29h convenience.Key words Field program gate array Gate de蛔Timing adjust1引言在开发CCD时序过程中发现CCD的两相电荷转移时序与CCD电荷转移效率密切相关,直接影响CCD最后输出信号的品质。

AndroidUI实时预览和编写的各种技巧

AndroidUI实时预览和编写的各种技巧⼀、啰嗦之前有读者反馈说,你搞这个所谓的最佳实践,每篇⽂章最后就给了⼀个库,感觉不是很⾼⼤上。

其实,我在写这个系列之初就有想过这个问题。

我的⽬的是:给出最实⽤的库来帮助我们开发,并且尽可能地说明这个库是如何编写的,希望让初创公司的程序员少写点给后⼈留坑的代码(想必⼤家对此深有体会)。

我之前给出的库都是很简单基础的,基本是⼀看就懂(但⾜够精妙),如果以后的⽂章涉及到了复杂的库,我会专门附加⼀篇库的讲解⽂。

如果⼀个库的原理你知道,此外这个库很容易扩展和维护,⽽且它还⽤到了很多最佳实践的经验,你为什么不去试试呢?程序的意义在于把前⼈的优秀思维和丰富经验记录下来,让使⽤者可以轻易地站在巨⼈的肩膀上。

它的意义甚⾄堪⽐于将祖先的智慧通过DNA遗传给我们,它是⼀种颠覆性的存在。

如果我仅仅是分享⾃⼰在实践中获得的很多经验,这就不是程序,⽽是教育!令⼈遗憾的是,我只能将很多有章可循的东西包装为库,⽽调试UI这种杂乱⽆章的技巧只能通过⽂章来记录,故产⽣了此⽂。

⼆、需求有很多初学者都听到前辈们说Android Studio(下⽂简称为as)的布局实时预览很强⼤,但是当我们真正使⽤as后就会发现很多界⾯在预览时是这样的:或者是这样的甚⾄是这样的:这时候谁再和我讲as可以让你实时地编写UI,我就要和谁拼命了。

(┬_┬)其实这个不是as的错,⽽是开发者(包括google的开发⼈员)的错。

因为很多开发者不注重实时的ui显⽰,⼀切都是以真机运⾏的结果做评判标准,从⽽产⽣了很多⽆法预览,但能运⾏的界⾯。

在很多项⽬中,⼀个原本可以⼀秒内看到的效果,最终需要漫长的过程(编译->运⾏->安装->显⽰)才能被我们看到。

我不得不说这是反⼈类的,⼤⼤降低了Android程序员的开发效率,破坏了开发的⼼情(我是很注重开发⼼情的),让as强⼤的预览功能变得形同虚设。

那么,既然官⽅不作为,只有我们⾃⼰来!下⾯就来说说如何让⾃⼰的UI可实时调试的⽅案和技巧。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

androiddm布局之ListView androiddm布局之ListView SDK文档说明: A view that shows items in a vertically scrolling list. The items come from the ListAdapter associated with this view. ListView是一个垂直显示选项的滚动列表,它的数据来自ListAdapter。注意它是可以多选。 ListView应该是应用最广泛的布局之一,首先从最简单的代码开始。使用高焕堂的36计中的例子---第四章4.5 第七章 7.1.4 P183。由于主要是讲解listview,所以对代码进行简化。 代码如下:

1. private String[] data ={"Android", "Google", "Eclipse"}; 2. private ListView lv = null; 3. private TextView tv = null; 4. @Override 5. public void onCreate(Bundle savedInstanceState) { 6. super.onCreate(savedInstanceState); 7. setContentView(R.layout.main); 8. lv = (ListView)findViewById(R.id.listdemo); 9. ArrayAdapter< String> adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,data); 10. lv.setAdapter(adapter); 11. lv.setOnItemClickListener(listener); 12. } 13. OnItemClickListener listener = new OnItemClickListener(){ 14. public void onItemClick(AdapterView arg0, View arg1, int arg2, 15. long arg3) { 16. tv = (TextView)findViewById(R.id.tv); 17. tv.setText("you click is:"+data[arg2]); 18. } 19. };

复制代码 XML文件:

1. 2. android:id="@+id/tv" 3. android:layout_width="fill_parent" 4. android:layout_height="wrap_content" 5. android:text="@string/hello" 6. /> 7. 8. android:id="@+id/listdemo" 9. android:layout_width="fill_parent" 10. android:layout_height="wrap_content" 11. />

复制代码 对于ListView中最重要的是如果让list中 加载/填充 数据。参看:

setAdapter(ListAdapter adapter) Sets the data behind this ListView.

这里使用比较简单的方式,ArrayAdapter通过数组实现list

所使用的构造函是: public ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects) 第二个参数说明: textViewResourceId The resource ID for a layout file containing a TextView to use when instantiating views.

这是一个资源ID,android把一些常用的显示方式的资源文件写好了,我把关于list部份列出,大家可以通过修改android.R.layout.看看效果。当然这个资源文件我们也可以自己写,以便实现自定义显示方式。

建议:认真看APIDemo下View中List的例子。 Step2 使用ListActivity,重新实现上面功能,如下

1. private String[] data ={"item1","item2","item3"}; 2. @Override 3. public void onCreate(Bundle icicle) { 4. super.onCreate(icicle); 5. // Create an array of Strings, that will be put to our ListActivity 6. this.setListAdapter(new ArrayAdapter(this, 7. android.R.layout.simple_list_item_1, data)); 8. } 9. @Override 10. protected void onListItemClick(ListView l, View v, int position, long id) { 11. setTitle("you click is:"+data[position]); 12. }

复制代码 代码是不是精简很多。 Step3 带有图标的listview 主程序的创建如下代码,代码十分的简单

1. IconifiedTextListAdapter itla = new IconifiedTextListAdapter(this); 2. // Add four items 3. itla.addItem(new IconifiedText( 4. "Surf Web", getResources().getDrawable(R.drawable.favicon))); 5. itla.addItem(new IconifiedText( 6. "Report Bug", getResources().getDrawable(R.drawable.bug))); 7. itla.addItem(new IconifiedText( 8. "Speak Spanish", getResources().getDrawable(R.drawable.locale))); 9. itla.addItem(new IconifiedText( 10. "Vidoop", getResources().getDrawable(R.drawable.vidoop))); 11. // Display it 12. setListAdapter(itla);

复制代码 1. 让我们开始创建基础类:IconifiedText,这是一个十分简单的类,其中只有三个成员,以及构造函数,还有相关的get/set函数。

1. public class IconifiedText{ 2. private String mText = ""; 3. private Drawable mIcon; 4. private boolean mSelectable = true; 5. public IconifiedText(String text, Drawable bullet) { 6. mIcon = bullet; 7. mText = text; 8. } 9. // ... 10. }

复制代码 2. 现在让我们来看一下IconifiedTextListAdapter类,它包含了50行的代码,但并没有做太多的事,它的基础是一个包含IconifiedTexts的列表,通过addItem来添加列表成员,getItem通过postion位置得到成员信息,使用isSelectable判断是否选中。 作为一个(专业)适配器,第二件事提供一个重载的接口,通过它得到它包含的(所有的东西): 1. /** @param convertView The old view to overwrite, if one is passed 2. * @returns a IconifiedTextView that holds wraps around an IconifiedText */ 3. public View getView(int position, View convertView, ViewGroup parent) { 4. IconifiedTextView btv; 5. if (convertView == null) { 6. btv = new IconifiedTextView(mContext, mItems.get(position)); 7. } else { // Reuse/Overwrite the View passed 8. // We are assuming(!) that it is castable! 9. btv = (IconifiedTextView) convertView; 10. btv.setText(mItems.get(position).getText()); 11. btv.setIcon(mItems.get(position).getIcon()); 12. } 13. return btv; 14. }

复制代码 3.IconifiedTextView这个类并不能懂,它继承于LinearLayout,我们要记得,在android的GUI是可以被嵌套的的。所以它没有任何问题,在这个View中,它包含了两个view,一个是ImageView还有一个是TextView.

1. public IconifiedTextView(Context context, IconifiedText aIconifiedText) { 2. super(context); 3. /* First Icon and the Text to the right (horizontal), 4. * not above and below (vertical) */ 5. this.setOrientation(HORIZONTAL); 6. mIcon = new ImageView(context); 7. mIcon.setImageDrawable(aIconifiedText.getIcon()); 8. // left, top, right, bottom 9. mIcon.setPadding(0, 2, 5, 0); // 2px up, 5px to the right 10. /* At first, add the Icon to ourself 11. * (! we are extending LinearLayout) */

相关文档
最新文档