版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
组件Android汇报人:XXX目录1234文本类组件按钮类组件复合组件案例实现01章节PART文本类组件添加相关标题文字添加相关标题文字添加相关标题文字添加相关标题文字文本类组件文本显示组件(TextView)用于显示静态文本,可以显示单行文本,也可以显示多行文本,而且还可以显示带图像的文本属性名称功能android:id组件的ID,程序通过这个ID访问该组件android:text显示的文本android:hint当文本框内文本为空时,默认显示的提示文本android:inputType显示内容的文本类型,取值textPassword、textEmailAddress、phone、date等android:singleLine是否单行显示android:layout_width宽度,取值fill_parent、wrap_content、match_parent或具体数值(单位:dp)android:width宽度,取值为数值(单位一般为dp)android:layout_height高度,取值fill_parent、wrap_content、match_parent或具体数值(单位:dp)android:height高度,取值为数值(单位一般为dp)android:textColor颜色android:textSize大小,单位一般为spandroid:textStyle显示效果,取值normal(正常)、bold(粗体)或italic(倾斜)android:autoLink敏感文字是否显示为链接形式,取值none、web、email、phone、map或allandroid:gravity设置文本对齐方式。android:drawableBottom在文本的下方输出一个drawable,如图片。如果指定一个颜色的话会把文本的背景设为该颜色,并且同时和background使用时覆盖后者。android:drawableLeft在文本的左边输出一个drawable,如图片。android:drawableRight在文本的右边输出一个drawable。android:drawableTop在文本的顶端输出一个drawable。代码修改组件上的文字:TextViewtv=null;
tv=(TextView)findViewById(R.id.textView1);
tv.setText(“Hello”);
通常情况下,前两句可以合并为一行:TextViewtv=(TextView)findViewById(R.id.textView1);文本类组件编辑框组件(EditText)用于输入信息,可以输入单行文本或多行文本,而且还可以输入指定格式的文本(如密码、电话号码、E-mail地址等)属性描述hint编辑框中提示信息,当输入信息后自动消失numeric只能输入数值类型的数据,可以取值integer(整数)或decimal(小数)dgits设定可以输入的数字符号,可以取值“1234567890.+-*/%()”ems设置为一个整数n,设置组件的宽度为n个字符的宽度EditText类组件inputType属性列表组件名称inputType属性值PlainTexttextPasswordtextPasswordPassword(Numeric)numberPasswordE-mailtextEmailAddressPhonephonePostalAddresstextPostalAddressMultilineTexttextMultiLineTimetimeDatedateNumbernumberNumber(Signed)numberSignedNumber(Decimal)numberDecimalAutoCompleteTextView组件可以很好地帮助用户进行文本信息的输入,它可以和一个字符串数组或List对象绑定,当用户输入一个及以上字符时,系统将在AutoCompleteTextView组件下方列出字符串数组中所有以输入字符开头的字符串文本类组件AutoCompleteTextView/MultiAutoCompleteTextViewAutoCompleteTextView组件使用的关键是需要使用AutoCompleteTextView类的
setAdapter方法指定一个Adapter对象,如“this.Auto.setAdapter(Adapter)”,其中adapter是一个数据集,可以是字符串数组或List对象属性功能android:completionHint设置下拉列表中的提示标题android:completionHintView定义提示视图中显示下拉列表android:completionThreshold指定用户至少输入多少个字符才会显示提示android:dropDownAnchor设置下拉菜单的定位“锚点”组件,如果没有指定该属性,将使用该TextView作为定位“锚点”组件android:dropDownHeight设置下拉列表的高度android:dropDownWidth设置下拉列表的宽度android:dropDownHorizontalOffset指定下拉列表与文本之间的水平间距android:dropDownVerticalOffset指定下拉列表与文本之间的竖直间距android:dropDownSelector设置下拉列表单击效果android:popupBackground设置下拉列表的背景
MultiAutoCompleteTextView组件的属性和使用方法与AutoCompleteTextView组件类似,不同的地方在于AutoCompleteTextView只能选择输入一个选项值,而MultiAutoCompleteTextView可以选择输入多个选项值文本类组件AutoCompleteTextView/MultiAutoCompleteTextView方法名功能publicvoidclearListSelection()清除所有的下拉列表项publicListAdaptergetAdapter()取得数据集publicvoidsetAdapter():设置数据集publicvoidsetcompletionHint()设置出现下拉列表的提示标题publicvoidsetThreshold()至少输入几个字符才会显示提示publicvoidsetDropHeight()设置下拉列表的高度publicvoidsetDropWidth()设置下拉列表的宽度publicvoidsetDropDownbackgroundResource()设置下拉列表的背景publicvoidsetOnClickListener()设置单击事件publicvoidsetOnItemClickListener()在选项上设置单击事件publicvoidsetOnItemSelectedListener()在选项选中时的单击事件示例代码如下:<AutoCompleteTextView
android:id="@+id/atv_content"
android:layout_width="match_parent"
android:layout_height="48dp"
android:completionHint="请输入搜索内容"
android:completionThreshold="1"
android:dropDownHorizontalOffset="5dp"/>
<MultiAutoCompleteTextView
android:id="@+id/matv_content"
android:layout_width="match_parent"
android:layout_height="48dp"
android:completionThreshold="1"
android:dropDownHorizontalOffset="5dp"
android:text=""
/>publicclassMainActivity
extendsAppCompatActivity
{
privateAutoCompleteTextViewatv_content;
privateMultiAutoCompleteTextViewmatv_content;
privatestaticfinalString[]data=newString[]{
"红桃","红苹果","青桔","青柠檬","黄柠檬"
};
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main),(v,insets)->{
InsetssystemBars
=insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left,systemBars.top,systemBars.right,systemBars.bottom);
returninsets;
});//找到布局上添加的AutoCompleteTextView和MultiAutoCompleteTextView组件
atv_content=(AutoCompleteTextView)findViewById(R.id.atv_content);
matv_content=(MultiAutoCompleteTextView)findViewById(R.id.matv_content);//定义两个数组适配器
ArrayAdapter<String>adapter=newArrayAdapter<String>(MainActivity.
this,android.R.layout.simple_dropdown_item_1line,data);
atv_content.setAdapter(adapter);
ArrayAdapter<String>adapter2=newArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_dropdown_item_1line,data);//设置自动完成组件的适配器
matv_content.setAdapter(adapter);
matv_content.setTokenizer(newMultiAutoCompleteTextView.CommaTokenizer());}}02章节PART按钮类组件添加相关标题文字添加相关标题文字添加相关标题文字添加相关标题文字
按钮组件(Button)是Android中应用最多的组件之一,与其他组件一样,Button有两种添加方式,一种是通过XML方式直接使用<button></button>标记添加,另一种是在程序中使用Button类创建对象并添加到视图中按钮类组件Button/ImageButtonImageButton的使用方法与Button类似,不同的是ImageButton使用srcCompat属性指定Drawable资源作为显示内容,其他属性与Button基本相同为按钮绑定监听程序有两种方法,一种一般是在Activity的onCreate()方法中完成,示例代码如下:Buttonbt=(Button)findViewById(R.id.button1);bt.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ //这里安排处理代码
}});另一种方式是在Activity中编写一个包含View类型参数并且将要触发的处理代码放在其中的方法,然后在布局文件中,给Button添加android:onClick属性指定对应的方法名。例如在Activity中编写一个方法如下:PublicvoidmyClick(Viewv){
//这里安排处理代码}然后在布局文件中,给Button添加属性android:onClick=“myClick”实现给按钮添加监听器。
默认情况下单选按钮(RadioButton)一般呈现为一个圆形图标,旁边放置一些说明性文字。使用时,多个单选按钮放在一组中,被称为“RadioGroup”通过checked属性可以设置单选按钮的状态。对于一组中的单选按钮,具备排它性,组中某个单选按钮被选中,组中其他单选按钮就会被取消选择按钮类组件单选按钮/单选按钮组组件(RadioButton/RadioGroup)两种方式添加单选按钮,一种是在XML布局文件中通过<RadioButton>标记添加,另一种是在Java代码中通过创建RadioButton类对象添加通常情况下,单选按钮需要与RadioGroup组件一起使用,组成一个单选按钮组RadioGrouprg=(RadioGroup)findViewById(R.id.radioGroup1); rg.setOnCheckedChangeListener(newOnCheckedChangeListener(){ @Override publicvoidonCheckedChanged(RadioGroupgroup,intcheckedID){ //......此处安排具体事件处理代码
} });默认情况下,复选框(CheckBox)显示一个方块图标,在该图标旁边放置一些说明性文字。复选框的使用与单选按钮类似,所不同的是单选按钮存在分组的情况,而复选框是独立操作的,可以多选两种方式添加复选框组件,一种是在XML布局文件中通过<CheckBox>标记添加,另一种是使用Java代码通过创建CheckBox类对象添加按钮类组件复选框(CheckBox)由于复选框可以选中多项,所以为了确定用户是否选择了某一项,需要为每个选项按钮都添加事件监听器。例如为checkBox1添加事件监听器代码如下:FinalCheckBoxck=(CheckBox)findViewById(R.id.checkBox1);Ck.setOnCheckedChangedListener(newOnCheckedChangeListener(){@OverridepublicvoidonCheckedChanged(CompoundButtonbuttonView,booleanisChecked){
//这里安排事件处理代码}}
ToggleButton可以实现在一个按钮上通过单击切换开和关两个状态,并且按钮上实时展示对应的文字信息按钮类组件开关状态按钮ToggleButton/开关切换组件Switch<ToggleButton
android:id="@+id/toggleButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="false"
android:text="开关状态按钮"
<!--关闭时展示的文字-->
android:textOff="关闭"
<!--打开时展示的文字-->
android:textOn="打开"/>Switch也是实现开/关状态切换的组件,与ToggleButton不同的是,此组件以滑块的方式实现状态切换<Switch
android:id="@+id/switch1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开关切换组件"
android:textOn="开"
android:textOff="关"
android:checked="false"/>ToggleButton/Switch的使用主要是监测其状态变化,并在事件监听代码中作相应的处理Chip代表一个小块中的复杂实体,它是一个圆形按钮,由一个标签、一个可选的芯片图标和一个可选的关闭图标组成。可以单击实现状态切换,并通过设置style属性更改Chip的外观样式,得到不同的展示效果Chip组件的事件监听同其他状态切换组件类似,使用OnCheckedChangeListener监听状态变化,在监听器的onCheckedChanged方法中处理状态事件。按钮类组件芯片Chip/芯片组ChipGroupstyle样式名称效果Widget.MaterialComponents.Chip.Action默认样式,单击后没有任何效果Widget.MaterialComponents.Chip.Entry末尾展示深处按钮,单击后前面展示选中图标,有选中状态Widget.MaterialComponents.Chip.Filter初始不展示前后图标,单击后展示前面选中的图标,且有选中状态Widget.MaterialComponents.Chip.Choice前后没有图标,单击后有选中的颜色变化效果ChipGroup与RadioGroup类似,用来管理多个子组件,采用流式布局规则控制内部组件的布局方式。默认情况下,子组件采用横向多行排列,每行的最后一个组件如果放不下时会自动换行。ChipGroupchipGroup=(ChipGroup)findViewById(R.id.chipGroup);List<Integer>childChipList=chipGroup.getCheckedChipIds();intcount=chipGroup.getChildCount();chipGrop.setOnCheckedChangeListener(newChipGroup.OnCheckedChangeListener(){
@OverridePublicvoidonCheckedChanged(ChipGroupgroup,intcheckedId){
for(inti=0;i<count;i++){
if(chipGroup.getChildAt(i).getId()==checkedId){
Log.e("TAG","onCheckedChanged:选中chip的内容:"+chipGroup.getChildAt(i).getText());}}}});<com.google.android.material.chip.ChipGroup
android:id="@+id/chipGrop"android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<com.google.android.material.chip.Chip
android:id="@+id/chip4"
style="@style/Widget.MaterialComponents.Chip.Action"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Action"/>
<com.google.android.material.chip.Chip
android:id="@+id/chip5"
style="@style/Widget.MaterialComponents.Chip.Entry"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Entry"/>
<com.google.android.material.chip.Chip
android:id="@+id/chip6"
style="@style/Widget.MaterialComponents.Chip.Filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Filter"/>
<com.google.android.material.chip.Chip
android:id="@+id/chip10"
style="@style/Widget.MaterialComponents.Chip.Choice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Choice"/></com.google.android.material.chip.ChipGroup>03章节PART复合组件添加相关标题文字添加相关标题文字添加相关标题文字添加相关标题文字
View封装了用户交互和显示的基本内容,是Android中所有组件的基础类,单独使用View时显示为一块矩形区域。View也可以处理其上的触摸、点击等事件复合组件View属性作用idid值,便于应用中查找background视图背景(可以设置颜色,也可以设置图片)clickable视图是否可以单击alpha视图的透明度,值在0~1之间,0为完全透明,1为完全不透明layout_width宽度layout_height高度top顶部相对于容器的坐标值bottom底部相对于容器的坐标值left左边相对于容器的坐标值right右边相对于容器的坐标值isScrollContainer设置view为滚动效应keepScreenOn视图在前台运行时是否保持亮屏paddingBottom下边距paddingRight右边距paddingTop上边距paddingLeft左边距rotationX水平方向旋转度数rotationY竖直方向旋转度数scaleX水平方向缩放比例scaleY竖直方向缩放比例textDirection文本的显示方向translationX水平方向移动距离translationY竖直方向移动距离方法名作用方法名作用getHeightView自身的高度getBottomView底部距离父View顶部的距离getWidthView自身的宽度getRightView右部距离父View左部的距离getXView左上角距离父View左边的距离getX触碰点到自身左边界的距离getYView左上角距离父View顶部的距离getY触碰点到自身上边界的距离getTopView顶部距离父View顶部的距离getRawX触碰点距离屏幕左边界的距离getLeftView左部距离父View左部的距离getRawY触碰点距离屏幕上边界的距离用于在界面中显示任何的Drawable对象,通常用来显示图片。在Android中,有两种方法添加图像视图,一种是通过在XML布局文件中使用<ImageView>标记添加,另一种是在Java代码中,通过创建ImageView类对象添加。复合组件图像视图(ImageView)属性描述android:adjustViewBounds是否保持宽高比。需要与maxWidth、MaxHeight一起使用,否则单独使用没有效果android:cropToPadding是否截取指定区域用空白代替。单独设置无效果,需要与scrollY一起使用android:maxHeight设置View的最大高度,单独使用无效,需要与setAdjustViewBounds一起使用。如果想设置图片固定大小,又想保持图片宽高比,需要如下设置:1)设置setAdjustViewBounds为true;2)设置maxWidth、MaxHeight;3)设置设置layout_width和layout_height为wrap_contentandroid:maxWidth设置View的最大宽度。同上android:scaleType设置图片的填充方式android:src设置View的drawable(如图片,也可以是颜色,但是需要指定View的大小)android:tint将图片渲染成指定的颜色属性值说明matrix用矩阵来绘图fitXY拉伸图片(不按比例)以填充View的宽高fitStart按比例拉伸图片,拉伸后图片的高度为View的高度,且显示在View的左边fitCenter按比例拉伸图片,拉伸后图片的高度为View的高度,且显示在View的中间fitEnd按比例拉伸图片,拉伸后图片的高度为View的高度,且显示在View的右边center按原图大小显示图片,但图片宽高大于View的宽高时,截图图片中间部分显示centerCrop按比例放大原图直至等于某边View的宽高显示centerInside当原图宽高或等于View的宽高时,按原图大小居中显示;反之将原图缩放至View的宽高居中显示ImageView可用的填充方式ProgressBar
是Android中的一个进度条组件,用于显示正在进行的任务的进度。它可以以水平或圆形的形式展示进度,并提供了多种样式和属性来满足不同的需求复合组件ProgressBar/ProgressBar(Horizontal)与SeekBar/SeekBar(Discrete)、RatingBar属性名功能android:progress设置进度条的当前进度值。android:max设置进度条的最大值。android:style设置显示风格android:indeterminate设置进度条是否为不确定模式。android:progressDrawable设置进度条的外观,可以是一个Drawable资源android:indeterminateDrawable设置进度条的不确定模式的外观,可以是一个Drawable资源android:secondaryProgress二级进度条复合组件ProgressBar/ProgressBar(Horizontal)与SeekBar/SeekBar(Discrete)、RatingBarSeekBar是
Android中的一个可滑动条组件,允许用户通过滑动来选择一个数值或调整某种设置。它通常用于音量控制、亮度调节、进度选择等场景。SeekBar继承自ProgressBar类属性名功能android:max设置
SeekBar的最大值。android:progress设置
SeekBar的当前进度值。android:style设置显示风格android:thumb设置滑块(Thumb)的图像,可以是一个Drawable资源。android:thumbOffset设置滑块的偏移量。android:progressDrawable:
设置
SeekBar的进度条外观,可以是一个Drawable资源。复合组件ProgressBar/ProgressBar(Horizontal)与SeekBar/SeekBar(Discrete)、RatingBarRatingBar实现一个星级评分效果,用户可通过触摸选择评分等级属性名功能android:max设置RatingBar的最大值。android:progress设置RatingBar的当前进度值。android:style设置显示风格android:isIndicator是否用作指示,用户无法更改,默认falseandroid:numStars显示多少个星星,必须为整数android:rating默认评分值,必须为浮点数android:stepSize评分每次增加的值,必须为浮点数ProgressBar根据业务处理需要在代码中设置当前值大小;SeekBar和RatingBar可由用户手动调节值大小,在事件处理代码中获取用户的选择值以完成相应的业务处理。需要高性能、高帧率、高画质的显示应用场景,例如视频播放、游戏、相机预览等。在这些场景中,需要直接操作图像数据,并且实时地显示到屏幕上复合组件SurfaceView与TextureView可以直接使用SurfaceView与其他组件配合完成实时流的展示,也可以创建自定义SurfaceView以实现个性化绘制展示功能,创建自定义的SurfaceView需要以下几个步骤:l
继承SurfaceView:首先创建一个自定义的类,继承自SurfaceView,并实现两个接口:surfaceholder.callback和runnable。l
初始化Surfaceholder:在构造方法中初始化Surfaceholder对象,并注册Surfaceholder的回调方法。l
实现回调方法:在回调方法中处理Surface的创建、改变和销毁事件。l
实现run方法:需要在run方法中实现子线程的绘图逻辑。l
获取canvas对象:在draw方法中获取canvas对象,并通过lockcanvas和unlockcanvasandpost方法进行绘图操作。publicclassImageSurfaceView
extendsSurfaceView
implementsSurfaceHolder.Callback,Runnable{
privateDrawThreaddrawThread;
privateBitmapimageBitmap;
publicImageSurfaceView(Contextcontext,intimageResource){
super(context);
this.imageBitmap
=BitmapFactory.decodeResource(context.getResources(),imageResource);
getHolder().addCallback(this);
}
@Override
publicvoidsurfaceCreated(@NonNull
SurfaceHolder
holder){
//开启新线程绘制图片
drawThread=newDrawThread(getHolder(),imageBitmap);
drawThread.setRunning(true);
drawThread.start();
}
@Override
publicvoidsurfaceChanged(@NonNull
SurfaceHolder
holder,intformat,intwidth,intheight){
}
@Override
publicvoidsurfaceDestroyed(@NonNull
SurfaceHolder
holder){
//停止绘制线程
booleanretry=true;
drawThread.setRunning(false);
while(retry){
try{
drawThread.join();
retry=false;
}catch(InterruptedExceptione){
e.printStackTrace();
}}}//新开一个线程用来绘制图片到Canvas
privateclassDrawThreadextendsThread{
privateSurfaceHolder
surfaceHolder;
privatebooleanisRunning
=false;
privateBitmapimageBitmap;
publicDrawThread(SurfaceHolder
holder,BitmapimageBitmap){
this.surfaceHolder
=holder;
this.imageBitmap
=imageBitmap;
}
publicvoidsetRunning(booleanisRunning){
this.isRunning
=isRunning;
}
finally{
if(canvas!=null){
surfaceHolder.unlockCanvasAndPost(canvas);
}}}}}}
@Override
publicvoidrun(){
while(isRunning){
Canvascanvas=null;
//尝试获取canvas绘制图片
try{
canvas=surfaceHolder.lockCanvas();
if(canvas!=null){
synchronized(surfaceHolder){
//绘制图片
canvas.drawBitmap(imageBitmap,0,0,null);
}
}
}之后就可以使用这个类,代码如下:publicclassMainActivity
extendsActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
//替换R.drawable.your_image为你的实际图片资源
ImageSurfaceView
imageSurfaceView
=newImageSurfaceView(this,R.drawable.your_image);
setContentView(imageSurfaceView);
}}TextureView也可以显示实时内容流(如视频、相机预览等应用场景)。为了使用TextureView,需要获得它的SurfaceTexture。然后使用SurfaceTexture来渲染内容。为此,需要实例化此类的对象并实现SurfaceTextureListener接口,实现其四个接口方法。publicclassMainActivity5extendsAppCompatActivity
implementsTextureView.SurfaceTextureListener{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextureView
myTexture
=newTextureView(this);
myTexture.setSurfaceTextureListener(this);
setContentView(myTexture);
}
@Override
publicvoidonSurfaceTextureAvailable(@NonNull
SurfaceTexture
surfaceTexture,inti,inti1){
}
@Override
publicvoidonSurfaceTextureSizeChanged(@NonNull
SurfaceTexture
surfaceTexture,inti,inti1){
}
@Override
publicbooleanonSurfaceTextureDestroyed(@NonNull
SurfaceTexture
surfaceTexture){
returnfalse;
}
@Override
publicvoidonSurfaceTextureUpdated(@NonNull
SurfaceTexture
surfaceTexture){
}}列表选择框(Spinner)相当于Java中的下拉列表框,用于提供一系列可选择的列表项供用户选择。可以采用XML布局方式和Java代码创建对象方式添加这个组件复合组件列表选择框(Spinner)<Spinner
android:id=”@+id/spinner1”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”android:spinnerMode=”dialog”
android:entries=”@array/数组名称”
android:prompt=”@string/info”/>List<String>options=newArrayList<>();options.add("选项1");options.add("选项2");options.add("选项3");ArrayAdapter<String>adapter=newArrayAdapter<>(this,android.R.layout.simple_spinner_item,options);adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);spinner.setAdapter(adapter);spinner.setOnItemSelectedListener(newAdapterView.OnItemSelectedListener(){
@Override
publicvoidonItemSelected(AdapterView<?>parent,Viewview,intposition,longid){
StringselectedOption=options.get(position);
//在这里执行一些操作,比如显示选中的选项
Toast.makeText(MainActivity.this,"你选择了:"+selectedOption,Toast.LENGTH_SHORT).show();
}
@Override
publicvoidonNothingSelected(AdapterView<?>parent){
//当用户没有选择任何选项时执行的操作
}});
循环视图RecylerView是增强版的列表视图,可以实现列表的纵向、横向、瀑布流滑动。复合组件循环视图RecyclerView方法名功能setAdapter设置列表项的适配器。适配器是RecyclerView.Adapter的子类对象setLayoutManager设置列表项的布局管理器,包括LinearLayoutManager、GridLayoutManager、StaggeredGridLayoutManageraddItemDecoration添加列表项的分割线removeItemDecoration移除列表项的分割线setItemAnimator设置列表项的增删动画addOnItemTouchListener添加列表项的触摸监听器removeOnItemTouchListener移除列表项的触摸监听器scrollToPosition滚动到指定位置RecyclerView有专门的适配器类型:RecyclerView.Adapter。在设置适配器时,要求自定义一个继承自RecyclerView.Adapter的子类适配器,用来定义列表项的布局与具体操作。类别方法名功能必须重写的方法getItemCount获得列表项的数目onCreateViewHolder创建整个布局的视图持有者。onBindViewHolder绑定每个列表项的视图持有者可重写可不重写的方法getItemViewType返回每个列表项的视图类型getItemId获得每个列表项的Id可以直接调用的方法notifyItemInserted通知适配器在指定位置已插入新项notifyItemRemoved通知适配器在指定位置已删除原有项notifyItemChanged通知适配器在指定位置的项已发生变化notifyDataSetChanged通知适配器整个列表的数据已发生变化
RecyclerView可使用三种布局管理器StaggeredGridLayoutManager(流式布局)、LinearLayoutManager(线性布局)、GridLayoutManager(网格布局)对显示的内容进行管理,而且可在代码中随时调用setLayoutManager方法切换新的布局。复合组件循环视图RecyclerView使用RecyclerView展示内容,首先创建一个布局文件,用于实现局部每个列表项的布局管理,如下list_item.xml文件所示:<LinearLayout
xmlns:android="/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/recycle_view_iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/recycle_view_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/></LinearLayout>创建一个Bean类,用于代表每个列表项的实体,如下代码:publicclassData{
privateStringname;
privateintimageId;
publicData(Stringname,intimageId){
=name;
this.imageId=imageId;
}
publicStringgetName(){returnname;}
publicvoidsetName(Stringname){=name;}
publicintgetImageId(){returnimageId;}
publicvoidsetImageId(intimageId){this.imageId=imageId;}}接着创建RecyclerView.Adapter的子类,后续作为RecyclerView的适配器使用,如下代码示例:publicclassRecyclerViewAdapter
extendsRecyclerView.Adapter<RecyclerView.ViewHolder>{
privateList<Data>mDataList;
publicclassViewHolder
extendsRecyclerView.ViewHolder{
ImageView
DataIv;
TextView
DataTv;
ViewItemView;
publicViewHolder(@NonNull
ViewitemView){
super(itemView);
ItemView=itemView;
DataIv=itemView.findViewById(R.id.recycle_view_iv);
DataTv=itemView.findViewById(R.id.recycle_view_tv);
}
}
publicRecyclerViewAdapter(List<Data>mDataList){
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《电力变压器产品质量监督抽查实施细则(2026年版)》
- 企业安全生产检查负责人预案
- 内镜中心护理团队协作
- 口腔护理的个性化方案
- 养老护理技能教学课件下载
- 确认2026年合同付款进度的确认函(4篇)
- 2026山西省人民医院急需紧缺高层次人才招聘5人考试模拟试题及答案详解
- 孕期补充剂使用
- 基础护理:妇产科护理技巧
- 创新护理课件设计大赛
- 2026年四川资中县重龙映象文化旅游开发集团有限责任公司人员招聘28人笔试历年常考点试题专练附带答案详解
- 西藏交通发展集团有限公司招聘笔试真题2025
- 2026年建筑八大员(机械员)岗位考试试题及答案
- 2026江苏连云港市城建控股集团有限公司招聘32人笔试参考题库及答案详解
- 屋面防水施工方案
- 阿里云邮箱购买合同
- 电梯安全性能验收标准
- 2026福建中考语文作文考前专项练习(题目+范文)
- GB/T 7991.6-2025搪玻璃层试验方法第6部分:高电压试验
- 精益管理知识培训课件
- 继续教育答案-试验检测信用评价办法解读
评论
0/150
提交评论