丑豆很早就让我给他写一下这个demo,每次都有点忙没给他写,趁着昨天晚上睡前一小时来搞定。 效果图 我参照的是拼多多商品分类的界面来写的,先看看样图 ? 然后看看动态的效果图 ?...,左边的列表item对应的type并没有显示在界面的话,我们还需要左边的列表进行一个滚动到对应的item的位置上,知道思路了,然后我们开始敲代码 布局代码实现 1、 主布局是两个列表,这两个列表我通过LineaLayout...我就不贴了,就是一个TextView和ImageView的事 3、右边列表的layout我重写了RecycleView的onMeasure方法,使其能扩展到最大,如果直接使用RecycleView的话,...item的position小于右边列表滚动的position的话,我们需要左边的列表进行向下滚动处理,这个处理跟上面一样,拿到右边的position,是左边的列表scrollToPositionWithOffset...在移动的时候,左边的RecycleView也是需要进行移动的 * 左边的recycleview有可能会不可见,这时候,我们必须去判断一下,左边最后的一个item是不是
在公司的 APP 中有类似如下图的聊天文字效果。一条聊天信息中,发送者名字的颜色是会随机改变,而内容信息是固定一个颜色。 ?...你认为先实现这方法很简单,使用两个 TextView 控件就可以搞定完事。左边的 TextView 放置名字,右边的 TextView 放置内容。这种方法是可以实现,那有没有更好的方法呢?...它的作用是能够改变字符串的字体颜色,设置字符串的字体样式,为字符串添加下划线等。...(文本字体) ImageSpan 图片 RelativeSizeSpan 相对大小(文本字体) ReplacementSpan 父类,一般不用 ScaleXSpan 基于 x 轴缩放 StyleSpan...我选择 RecycleView 来显示数据,它的 item 布局中放置一个 TextView。 ?
最近有点忙,项目进度跟的比较紧。最近需求那边让我们写一个左右和上下都可滑动的列表,用来展示多个Title的值。这里我把需求简化了一下。老规矩,先看图。...,导致我一次性加载800条数据时,界面卡顿,体验很不好。...而且它的点击效果只能分别点击左边和右边,并不能点击的时候整个item都高亮。 所以,这里我就去研究了一下该怎么实现这个需求。...,所以,我们需要去拦截手势,使用scrollTo方法实现水平滚动。...private int[] mRightTitleWidthList = null; //展示数据时使用的RecycleView private RecyclerView mRecyclerView
其中, scroll 表示当RecyclerView向上滚动时,Toolbar会跟着一起向上滚动并实现隐藏; enterAlways 表示当RecyclerView向下滚动时...,Toolbar会跟着一起向下滚动并重新显示; snap 表示当Toolbar还没有完全隐藏或显示时,会根据当前滚动的距离,自动选择是隐藏还是显示。...其中, scroll表示当RecyclerView向上滚动时,Toolbar会跟着一起向上滚动并实现隐藏; enterAlways表示当RecyclerView向下滚动时,Toolbar会跟着一起向下滚动并重新显示...; snap表示当Toolbar还没有完全隐藏或显示时,会根据当前滚动的距离,自动选择是隐藏还是显示。...当用户需要操作Toolbar上的功能时,只需要轻微向下滚动,Toolbar就会重新出现。
QMUIFontFitTextView 使 TextView 在宽度固定的情况下,文字多到一行放不下时能缩小文字大小来自适应。...(ListView 或 RecycleView 的 itemView)复用已存在的 View。...QMUIObservableScrollView 可以监听滚动事件的 ScrollView,并能在滚动回调中获取每次滚动前后的偏移量。...支持分别指定背景色和边框色,指定颜色时支持使用 color 或 ColorStateList。...QMUIStickySectionLayout 支持二级结构的列表的折叠与展开;支持滚动时悬浮当前 section header; 支持在section list 或 section item list
} Greeting函数中的Text组件,就是Compose提供的文本组件,类似XML方式中的TextView组件,代码如下所示: TextView android:id="@+id/tvName...快来一起学习一下吧~ 延迟列表组件 Compose为我们提供了LazyColumn和LazyRow组件,相当于XML中的RecycleView组件,从名字中我们也可以知道一个是垂直滚动一个是水平滚动。...,是当文本变化的时候我们都需要手动调用textview.setText = “”,而由于 Compose 是声明式的,所以更新它的唯一方法是通过新参数调用同一可组合项。...number,文本和按钮垂直排列,点击按钮时number加1,运行程序,结果如下图所示: 一切看起来很正常,但是点击“add”我们会发现,文本中显示的数值并没有改变。...可以看到,这样当点击“add”按钮时,文本的数值会不断增加。
二、RecycleView是什么 RecycleView是Android5.0后谷歌推出的一个用于在有限的窗口中展示大量数据集的控件,位于support-v7包中。...说白了就是ui的列表,可以很灵活的控制列表中每一项的数据,布局,动画。三、RecycleView的优点 1、支持局部刷新。 2、可以自定义item增删时的动画。...四、RecycleView的使用方法首先要在build.gradle文件中添加引用compile 'com.android.support:recyclerview-v7:26.1.0'主页面布局:RecycleView提供了三种布局管理器:LinearLayoutManager: 线性布局,以垂直或水平滚动列表方式显示项目。GridLayoutManager: 网格布局,在网格中显示项目。...当我们定义好接口后,我们在onBindViewHolder()方法中为holder.itemView(itemView是列表中的每一个item项)设置了点击事件监听,然后在onClick()中判断是否有用户传递过
实验二: Recycleview基本使用 实验目标和实验内容: 1、掌握UI设计中的layout布局(约束布局)与基本控件(button、text、imageview等); 2、掌握复杂控件与adapter...我们这样思考,当我们去完成一个界面的布局时,我们要向里面传数据,怎么去传呢?全写在xml文件里显而不合适,这就是Adapter的作用。...在这里,补充一个知识点,关于RecyclerView的调用顺序总是按照: 获取大小——>绑定布局——>加载ViewHolder类——>绑定数据 这样一个规律的,通过这样的规律,我们就能知道是按照怎样的顺序来调用这些重载函数的了...RecycleView开发必须初始化LinearLayoutManager:recyclerView.setLayoutManager(linearLayoutManager); 2.使用RecycleView...② onBindViewHolder 来加载数据 ③ getItemCount 得到数据源的大小 3.和ListView一样使用RecycelView嵌套在scrollView里面的时候也会存在一些问题
layout_height="match_parent" > <android.support.v7.widget.RecyclerView android:id="@+id/id_recycleview...textSize="13sp" /> 这里的TextView...android:background="@color/c_3ec88e" android:gravity="center" android:text="我是头部...对标题栏执行透明度变化 if (position == 0) { //计算滚动的距离占header高度的比例...垂直滚动的距离: public int getScollYDistance(RecyclerView rv) { LinearLayoutManager layoutManager =
我本来先是网上看RecycleView的分页加载的方式,但是看到很多文章都是帮你封装好,然后让你拿来直接用,一是直接拿别人封装的东西自己还是不理解,二是如果要加定制化的东西,改别人的代码毕竟不方便,或者你就用了一个功能...所以我主要还是来分析,分页加载到底是怎么样一步步来实现,而不是说封装好来让大家使用。...“加载中” //并且要让我写在布局中的滚动条进行显示(一般在加载中才会有滚动条的显示) //这时候调用我们的自定义方法loadMoreListener.onLoadMore...,最后一项的状态也不需要改变。...这时候我们把新加载的四条数据插在的前面,然后我们对于最后一项不需要做处理,这样当我们往下滑的时候。又会重新跑一遍上面的逻辑。
本来是没什么问题的,但是我发现,他在这个界面加了一个Fragment。...return view;复制代码 你有想过这个onCreate方法中的ViewGroup参数到底是什么,为什么这里它可以直接使用findViewById等。然后去对RecycleView做处理。...手机运行后RecycleView还是有数据的。 ---- 解惑: 问题一: 我新建一个Activity,他的布局文件是: 的id相对应的布局。 为什么会这样?...那为什么Demo中Fragment返回了一个同Activity一样的布局内容的View,却没有显示呢,因为我们Activity中的RecycleView的高度是match_parent,如果我们把它改为
为组件的四边设置填充区域 android:scrollbars 定义该组件滚动时显示几个滚动条。...每一个视图都需要定义android:layout_width和android:layout_height,其值可以有如下几种情况,可以指定确切的大小: wrap_content:表示有视图的内容决定大小...textView1 = (TextView)findViewById(R.id.textview1); textView1.setText(“新的字符串内容”); 二:基本视图 文本控件...——TextView,显示文本信息,显示基本文本。...=“wrap_content” android:text=“我是文本控件” /> 显示复杂文本 TextView android:id=“@+id/textview1” android
为组件的四边设置填充区域 android:scrollbars 定义该组件滚动时显示几个滚动条。...每一个视图都需要定义android:layout_width和android:layout_height,其值可以有如下几种情况,可以指定确切的大小: wrap_content:表示有视图的内容决定大小...textView1 = (TextView)findViewById(R.id.textview1); textView1.setText(“新的字符串内容”); 二:基本视图 文本控件——TextView...” android:text=“我是文本控件” /> 显示复杂文本 TextView android:id=“@+id/textview1” android:layout_width...=“fill_parent”android:layout_height=“wrap_content” android:text=“我是文本控件”android:textSize=“20dp” android
占位符具有以下优点: 支持滚动条:PagedList 可向 PagedListAdapter 提供列表项数量。此信息允许适配器绘制滚动条来传达整个列表大小。...有新页面载入时,滚动条不会跳到指定位置,因为列表不会改变大小。 无需加载旋转图标:由于列表大小已知,因此无需提醒用户正在加载更多项。...可配置 RecyclerView 的 Adapters,当用户滚动到加载数据的末尾时自动请求数据。 支持 Kotlin 协程和 Flow, 以及 LiveData 和 RxJava。...> 监听数据刷新,每当 RecyclerView 即将滚动到底部的时候,就会加载新的数据,最后再使用PagingAdapter 展示数据。...而load方法的参数LoadParams中有一个key值,可以在加载下一页数据时使用。
上的title颜色和大小 7.统一收起键盘 8.导入自定义字体库 9.动态方法的动态执行 10.isKindOfClass和isMemberOfClass的区别 11.Label字体大小 12.为UIView...33、获取手机RAM容量 34、在UITextView中显示html文本 35、选中textField或者textView所有文本(我这里以textView为例) 36、隐藏UITextView/UITextField...= attributedString; 35、选中textField或者textView所有文本(我这里以textView为例) [self.textView setSelectedTextRange...停止滚动(不是禁止,而是暂时停止滚动) [scrollView setContentOffset:scrollView.contentOffset animated:NO]; 45、使用xib设置UIView...,用户停止输入的时候自动搜索(我这里设置的是0.5s,可根据需求更改) // 输入框文字改变的时候调用 -(void)searchBar:(UISearchBar *)searchBar textDidChange
1.View基础 1.1 什么是View 简单的说View是所有控件的“祖宗”,无论TextView、Button、Linearlayout,还是ListView、RecycleView,他们的基类都是...,这四个值并不会发生改变,改变的是View的偏移量,坐标系如图1所示。...- getTop(); 在我刚开始接触Android的时候,在我想象中的样子View的坐标为图2 所示,莫名的感觉图2更符合我的思维习惯。...我们可以使用getX和getY方法获取当前View左上角的坐标,由此我们可以通过记录分别记录按下和抬起时坐标,通过坐标计算可以判断用户是左右滑动或者上下滑动,代码如下所示: @Override public...的值 大于 按下时X的值那么说明用户向右滑动了。
什么算是好的xml布局呢,我认为核心有两点,一个是提升开发效率,另一个是提升app性能。围绕着这两点,我也精心整理出了17个xml布局小技巧,下面一起来看看都有哪些,你又掌握了几个呢?...为什么说是轻量级呢,是因为Space的draw方法是空的,也就是什么都不绘制,只有onMeasure方法测量宽高。...而在使用ConstraintLayout的过程中,我发现有些同学总是会忽略GuideLine,尽管ConstraintLayout已经非常好用了,但是有些布局仍然显得有些「笨拙」。...而右边如果想要指定一个位置换行,可以了解一下Barrier~ xml代码就不贴了,已上传到Github,点击查看 include 当我们在写一个复杂的页面时,xml代码可能有几百行甚至几千行,阅读起来总是很麻烦...,当子layout嵌入在父layout中时,只需要使用tools:showIn在子layout的根布局指定父layout,就可以实时预览在父layout中的效果了。
现在App的开发已经是非常成熟,涌现了一大批开源的工具。这些项目能够提高我们的搬砖效率。以下是一些在开发中比较常使用的控件和库。...,滑动删除 https://github.com/bauerca/drag-sort-listview RecyclerViewSwipeDismiss RecycleView实现的滑动删除item https...和dimens,可直接使用这个库的定义 https://github.com/DmitryMalkovich/material-design-dimens material-dialogs https:...SmartTabLayout ViewPager头部导航栏滑动时的Tab,也有indicator https://github.com/ogaclejapan/SmartTabLayout FlycoTabLayout...https://github.com/umano/AndroidSlidingUpPanel richeditor-android 富文本编辑器 https://github.com/wasabeef
在Android开发中,ListView是使用最广泛的组件之一,虽然谷歌推出了RecycleView,但是很多项目中依旧在使用ListView,本文将总结一下使用过程中遇到的一些问题,与大家共勉~~~...(假设每一个列表项所对应的布局文件中包含了两个组件:TextView和EditText,id分别为textview和edittext。...1、stackFromBottom属性,设置该属性为true之后你做好的列表就会显示到最下面 2、cacheColorHint属性,很多人希望能够改变一下它的背景,使他能够符合整体的UI设计,改变背景背很简单只需要准备一张图片然后指定属性...属性,android:fadeScrollbars="true" 时可以实现滚动条的自动隐藏和显示。...1、去除默认的点击选中时的颜色 设置列表layout的backgroudcolor属性就OK了。
其次在layout文件夹下新建item.xml(Recycleview的Item布局)和tv.xml文件(文字效果),具体代码参详源码 3、加载数据 在MainActivity中的onCreate方法中初始化数据...设置LayoutManager以及分割线的功能 4、RecycleViewAdapter的实现 使用过RecycleView的小伙伴都知道,RecyleView自身没有回调接口,需要我们为其添加,供外部调用...R.id.tv); ivDelete = (ImageView) itemView.findViewById(R.id.delelte); } } } 在这个类中我定义了一个接口...5、ItemTouchHelper 还记得上面我所说的一个类吗?...实现该监听方法,这样我们就根据用户的拖动的手势改变数据位置了。
领取专属 10元无门槛券
手把手带您无忧上云