TextView类也有自己的滚动功能,所以不需要使用ScrollView,但是只有两个结合使用,才能保证显示较多内容时候的效率。但只有两者结合使用才可以实现在一个较大的容器中一个文本视图效果。...此方法将视图滚动到顶部或者底部,并且将焦点置于新的可视区域的最顶部/最底部组件。若没有适合的组件做焦点,当前的ScrollView会收回焦点。...返回值 是否取得了焦点 protected void onSizeChanged (int w, int h, int oldw, int oldh) 布局期间当视图的大小发生改变时调用。...参数 w 视图当前宽度 h 视图当前高度 oldw 视图改变前的宽度 oldh 视图改变前的高度 六、补充 文章精选 Android ApiDemos.../ScrollView2 添加自动滚动和智能焦点切换 [Android学习指南]使用ScrollView实现滚动效果 Android中ScrollView与ListView共用问题的解决方案 示例代码
然后对ListView的touch事件进行监听,如果当前ListView已经滚动到顶部并且手指还在向下拉的话,那就将下拉头显示出来,松手后进行刷新操作,并将下拉头隐藏。原理示意图如下: ?...ableToPull) { yDown = event.getRawY(); } // 如果首个元素的上边缘,距离父布局值为0,就说明ListView滚动到了最顶部,此时应该允许下拉刷新...在onTouch方法中的第一行就调用了setIsAbleToPull方法来判断ListView是否滚动到了最顶部,只有滚动到了最顶部才会执行后面的代码,否则就视为正常的ListView滚动,不做任何处理...当ListView滚动到了最顶部时,如果手指还在向下拖动,就会改变下拉头的偏移值,让下拉头显示出来,下拉的距离设定为手指移动距离的1/2,这样才会有拉力的感觉。...另外每次在下拉的时候都还会调用updateHeaderView方法来改变下拉头中的数据,比如箭头方向的旋转,下拉文字描述的改变等。
根据以上分析,我们可以知道,重画子View的原理就是: 当PullToRefreshListView已经滚动到顶部的时候,通过监控滑动手势来计算distanceY,从而确定要将canvas向上移动多少再重画子...如果此时PullToRefreshListView没有“滚动到顶部”,则不做任何处理,反之则将lastAction更新为ACTION_MOVE状态,更新isPulling变量,记录当前手指的位置作为计算下拉距离的起始位置...在这个手势处理的实现中,当用户在下拉过程中突然将PullToRefreshListView往上拉,如果将PullToRefreshListView 拉到不处于“滚动到顶部的状态”时,则重置下拉状态,使得...下拉到“滚动到顶部”状态,则又重新执行上述操作,使PullToRefreshListView进入下拉状态。...如何判断ListView是否已经滚动到顶部 下一步,我们如何判断ListView是否处于“滚动到顶部”状态呢?这一问题我PullToRefreshListView的onScroll中解决。
一、Android 控制ScrollView滚动到底部 在开发中,我们经常需要更新列表,并将列表拉倒最底部,比如发表微博,聊天界面等等, 这里有两种办法,第一种,使用scrollTo(): public...scrollView.fullScroll(ScrollView.FOCUS_UP);滚动到顶部 需要注意的是:该方法不能直接被调用 因为Android很多函数都是基于消息队列来同步,所以需要一部操作...为何如此 childView 有获取焦点的能力 由于该 childView 超过屏幕大小,并且有获取焦点的能力,所以造成了该问题。由于不能改变其大小,只能阻止其获取焦点。...基本思路有,取消它获取焦点的能力,让ScrovView截获它的焦点等。...如何解决 让 childView 的焦点被截获 具体方案 ScrollView 下的 LinearLayout 中加了android:descendantFocusability="blocksDescendants
那么Android5.0也同时给出了相应的解决方案,即推出MaterialDesign库,通过该库中的AppBarLayout控件,对Toolbar加以包装,从而实现顶部工具栏的动态变化效果。...AppBarLayout的滚动行为呢?...,比如说是先滚还是后滚,是滚一半还是全部滚,是自动滚还是手动滚等等。...既然AppBarLayout的高度是变化的,那也得区分是滚一半还是滚全部。...3、大家都知道ViewPager是左右滚动的翻页视图,用户通过手势把页面横向拉动一段距离后松开,系统会判断接下来是自动左滚还是自动右滚,总之最后用户看到的是一个完整的页面,而不是拉到一半的页面。
ScrollView滑动监听: Google并没有给我们提供ScrollView的滑动距离、是否滑动到布局底部、顶部的方法,但是提供了一个onScrollChanged方法: @Override...scrollViewListener.onScrollChanged(this, x, y, oldx, oldy); } } } 设置标题渐变 滚动监听暴露出来我们就该去设置标题栏随着ScrollView的滑动来改变标题栏的透明度实现渐变...image.png 然后我们需要获取图片的高度,并且设置滚动监听,随着滚动的距离来设置标题栏的颜色透明度和字体颜色的透明度 /** * 获取顶部图片高度后,设置滚动监听 */...//滑动到banner下面设置普通颜色 textView.setBackgroundColor(Color.argb((int) 255, 144,151,166));...其实并不难,只是我们没有亲自动手去实现,相信多动手自己亲自去实现一下,UI想要的我们都可以实现。 源码地址:欢迎Star,fork,有问题多多指正。
Android 软键盘弹起表现 同样,在 Android 上,输入框获取焦点,键盘弹起,但是页面(webview)高度会发生改变,一般来说,高度为可视区高度(原高度减去软键盘高度),除了因为页面内容被撑开可以产生滚动...IOS 软键盘收起表现 触发软键盘上的“收起”按钮键盘或者输入框以外的页面区域时,输入框失去焦点,软键盘收起。 Android 软键盘收起表现 触发输入框以外的区域时,输入框失去焦点,软键盘收起。...为了解决这个问题,ios设计者们让webview上滚,但滚动的结果有些出乎意料:输入框本身可以理解地滚动到了实际可视区域的正中间,但 fixed 元素不会发生重新计算,而是保持原来的相对位置,跟着输入框一起被上推...这其实可能只适用于我这种情景,这个解决办法的原理是:scrollIntoView(true)想让输入框的顶部滚动到与可视区顶部齐平的效果,但是由于ios键盘弹起之后最大滚动距离等于键盘的高度,所以,通过这个方法会让...解决办法: 当键盘收起时,加入下面其中一种办法就可以解决 滚动到顶部 window.scrollTo(0,0) 滚动到底部 window.scrollTo(0, Math.max(document.body.clientHeight
注意: ScrollView的子元素只能有一个,可以是一个 View(如 ImageView、 TextView等) 也可以是一个 ViewGroup(如 LinearLayout、 RelativeLayout...2. android:overScrollMode="never" 删除 ScrollView拉到尽头(顶部、底部),然后继续拉出现的阴影效果,适用于2.3及以上的 否则不用设置。...4. android:descendantFocusability="" 该属性是当一个为view获取焦点时,定义 ViewGroup和其子控件两者之间的关系。...属性的值有三种: beforeDescendants //viewgroup会优先其子类控件而获取到焦点 afterDescendants //viewgroup只有当其子类控件不需要获取焦点时才获取焦点...} }); 滑动位置控制 scrollView.post(new Runnable() { @Override public void run() { //滑动到顶部
常用的几个事件 动画事件 动画事件主要用于Animation控件,可监控动画开始、结束、重播等行为。...动画事件的具体实现代码可参考《Android开发笔记(二十一)横幅轮播页Banner》。 翻页事件 翻页事件,主要用于ViewPager控件,可监控翻页状态变化、滚动、选定等行为。...在博文《Android开发笔记(二十)顶部导航栏ActionBar》里面,博主提到ActionBar自带的搜索框SearchView,但是SearchView存在几点不足: 1、搜索按钮只能显示图标,...: 设置下拉列表的宽度 setSingleLine : 设置列表中的每个元素是否单行显示 示例代码主要实现了三个功能: 1、在文本框一开始获得焦点时,自动弹出历史搜索关键词下拉列表; 2、...点击下拉列表的某项,文本框自动填入该项的关键词文本; 3、点击搜索按钮,主页面通过回调获得搜索关键词,从而能够做进一步的处理; 下面是AutoCompleteTextView方式的效果图 ?
Layout 里面多多个孩子的时候,当下面一个孩子是 RecyclerView 或者ListView 的时候,往往会自动滑动到 ListView 或者 RecyclerView 的第一个 item,导致进入界面的时候会导致...mNoHorizontalScrollView.scrollTo(0,0);方法,滑动到顶部,因为onWindowFocusChanged是在所有View绘制完毕的时候才会回调的,不熟悉的话建议先回去看一下...,让其获取焦点 view.setFocusable(true); view.setFocusableInTouchMode(true); view.requestFocus(); 这段代码在初始化的时候就让该界面的顶部的某一个控件获得焦点...(true); view.requestFocus(); 这段代码在初始化的时候就让该界面的顶部的某一个控件获得焦点,滚动条自然就显示到顶部了。...但是该方法存在缺点,就是当我们上面的view如果滑动到一半的时候,切换到下一个Fragment,在切换回来的时候,RecyclerView的第一个item会自动滑动到顶部。
design,中文是设计之意,即“设想和计划,设想是目的,计划是过程安排”,通常指有目标和计划的创作行为、活动。在这个竞争激烈的数字化信息时代,企业建立自己的网站已经刻不容缓。...> 1.2:Activity具体代码 SwipeDismissBehavior主要是控制控件的行为,LayoutParams是布局参数,textview这个控件是在协调者布局中滑动的,所以,要获取该布局的参数...,然后再设置行为。...2.1:创建布局文件 外层是协调者布局,中间就是一个类似于listview的RecyclerView,和一个右下角的返回顶部按钮。...比如说,toolbar在何时显示,可以选择只要是上滑就显示,也可以选择是滑到最上面的内容才显示,这个例子就是滑动到最上面的内容toolbar再显示。
Layout 里面多多个孩子的时候,当下面一个孩子是 RecyclerView 或者ListView 的时候,往往会自动滑动到 ListView 或者 RecyclerView 的第一个 item,导致进入界面的时候会导致...,主要要一下两种方法 第一种方法,重写Activity的onWindowFocusChanged()方法,在里面调用mNoHorizontalScrollView.scrollTo(0,0);方法,滑动到顶部...,让其获取焦点 view.setFocusable(true); view.setFocusableInTouchMode(true); view.requestFocus(); 这段代码在初始化的时候就让该界面的顶部的某一个控件获得焦点...(true); view.requestFocus(); 这段代码在初始化的时候就让该界面的顶部的某一个控件获得焦点,滚动条自然就显示到顶部了。...但是该方法存在缺点,就是当我们上面的view如果滑动到一半的时候,切换到下一个Fragment,在切换回来的时候,RecyclerView的第一个item会自动滑动到顶部。
一.场景 “吸顶”是一种比较老的交互方式,在PC页面已经用了很多年了,如图: sticky 吸顶元素的初始位置一般靠近页面顶部,但与顶部有一定距离,这块区域放的是最醒目的元素,比如Banner图...(最重要的元素通常固定在页面顶部,navbar-fixed-top) 二.PC解决方案 页面滚动到一定位置时,做一些事情 “回到顶部”按钮也是这样的,页面向下滚动超过150px时,显示该按钮,否则隐藏...”的实现方式一模一样,效果好像还不错,但很快会发现滚动到临界位置stickyT的时候,页面抖了一下,向上缩了一截。...监听滚动判断位置的方法完全失效,平滑吸顶效果变成了滚过临界位置直到停止滚动时,吸顶元素跳到目标位置,体验非常差,不可忍受 scroll不能用,但还可以有一些奇怪的思路,比如定时器读scrollTop,touchmove...提供了另一种方式:position: sticky,自IOS 6.1就支持了,最近Chrome56才支持 这个CSS规则专门负责吸顶,一般用法: .sticky { // 滚过初始位置时自动吸顶
简单Demo 传统套路: 写两个一模一样的固定栏,外层用帧布局(FrameLayout)包裹,然后把外层的固定栏先隐藏,当内层的固定栏滑动到外层固定栏位置的时候,把内层固定栏隐藏,外层的固定栏显示,反之滑回来的时候把外层固定栏隐藏...:gravity="center" android:orientation="vertical" <TextView android:id="@+id/tv_topView" android...,当我们页面滑动到指定点的时候,需要把内层的“我是内层固定布局”移除,同时添加到外层的ViewGroup(LinearLayout)中。...,就可以在回调接口里拿到对应的滑动数据,其中第二个参数t就是滑动y轴的距离,现在我们只需要拿到固定布局到顶部的距离就可以判断什么时候需要移除和添加View了。...,得到的结果都为0,由于此时Activity还没有得到焦点,依附在Activity的View自然也就得不到数据,所以我们需要在onResume后去进行对View的数据获取。
倒是第三点的下拉刷新,以及第二点的上拉监听,却不容易实现。 虽然Android提供了专门的下拉刷新布局SwipeRefreshLayout,但它并没有页面随手势下滚的效果。...因此若想呈现完全仿照京东的下拉刷新特效,只能由开发者编写一个自定义的布局控件了。 自定义的下拉刷新布局,首先要能够区分是页面的正常下滚,还是拉伸头部要求刷新。...所以此处得捕捉页面滚动到顶部的事件,相对应的则是页面滚动到底部的事件。鉴于App首页基本采用滚动视图ScrollView实现页面滚动功能,故而该问题就变成了如何监听该视图滚到顶部或者滚到底部。...正好ScrollView提供了滚动行为的变化方法onScrollChanged,通过重写该方法即可判断是否到达顶部或底部,重写后的代码片段如下所示: protected void onScrollChanged...新的上层视图需要完成以下三项任务: 一、在下层视图的最前面自动添加一个下拉刷新头部,保证该下拉头部位于整个页面的最上方; 二、给前面自定义的滚动视图注册滚动监听器和触摸监听器,其中滚动监听器用于处理到达顶部
选择好之后,如果点击Tab会切换到相应地区级别,并且滚动到之前选择的地区显示,创建新的Tab就默认滚动到第一个position的位置。 其次,来看看我们这个界面的布局: <TextView android:id="@+id/user_tv_dialog_title" android:layout_width...-- 顶部的TabLayout --> <android.support.design.widget.TabLayout android:id="@+id/user_tb_dialog_tab...Tab,并且RecyclerView滚动到最顶部 tabLayout.addTab(createTab(), true); recyclerView.smoothScrollToPosition...之前我是这么做的,但是会出奇怪的问题:在市级重新选择之后,移除后面的tab后再重新选县级之后,TabLayout的横线不会移动到镇级上了。
((;′⌒`)) 接下来说一下实现原理: 该控件分为以下几个部分: 歌词自动滚动 歌词颜色字体变化 触碰屏幕歌词不滚动,高亮显示,离开时自动移动到当前歌词位置 触碰屏幕中间线条出现以及显示该歌词的时间...mWordList); wordList.add(""); wordList.add(""); wordList.add(""); wordList.add(""); 由于歌词的滚自动滚动是根据歌词时间来进行移动的...}catch ( Exception e){ e.printStackTrace(); } } 3.对于歌词自动移动到当前语句: 本身我的想法就是多设置一个变量还是在这个 Runable...所以我们应该重新写一个 Runable() 来控制它的自动移动到当前位置。这样子的话各做各的事情,在写逻辑的时候会比较容易理顺。.... /** * 歌词自动滑动到特定位置任务 */ private static class AutoBackWork implements Runnable{ @Override
你可以使用Android Studio Layout编辑器界面来手动或者自动指定约束。要更好的理解他,需要我们了解一下他对一个选中的widget的基本控键。...注意:该部分讲有关手动创建约束的,需要将左上角的自动创建约束按钮关闭 在开始之前,确保ImageView和TextView在layout内。...我们可以在TextView的顶部控键与ImageView的底部控键创建一个约束,如图: 移除约束:移除某个约束只需点击指定约束的控键;移除全部约束需要点击如下按钮: 下一步,创建ImageView...你可以点击按钮设置不同的值来改变margins。...调整TextView和Plain Text为48dp。并自动创建约束。 同样的选中上传button放置到右侧。
当布局超过屏幕大小时,ScrollView会自动启用滚动功能,用户可以通过滑动屏幕来查看隐藏部分的内容。...ScrollView可以嵌套其他视图组件,例如TextView、ImageView等,以实现滚动展示更多内容。它对于需要显示较长文本、图片或其他可滚动内容的界面非常有用。...常见方法: scrollTo(int x, int y):将ScrollView滚动到指定的位置,参数x和y分别代表目标位置的水平和垂直偏移量。...fullScroll(int direction):使ScrollView滚动到指定的边界,参数direction可以是View.FOCUS_UP(滚动到顶部)或View.FOCUS_DOWN(滚动到底部...-- 这里可以添加更多的内容 --> <TextView android:layout_width="match_parent" android
分享给大家供大家参考,具体如下: 要实现某个view的背景透明度跟随scrollview滑动而改变需要重新scrollview的onOverScrolled方法,该方法随着滑动变化(包括手指滑动、手指移开惯性滑动...step1:设定布局 由于我们要实现的是滑动时标题的背景透明度改变,固定顶部的标题view不能在srcollview里面跟随滑动,所以需要这样布局: <FrameLayout android:layout_width...android:layout_height="match_parent" android:orientation="vertical" <TextView...); } @Override public void scrollTo(int x, int y) { //这是为了修复noScrllListView嵌套在srcollview时就自动滑动到...noscrolllistview的顶部的bug,不影响使用 if (x == 0 && y == 0 || y <= 0) { super.scrollTo(x, y); }
领取专属 10元无门槛券
手把手带您无忧上云