首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

安卓ScrollView更改子元素可见性后跳转

安卓ScrollView是一种用于实现滚动视图的控件,它可以包含多个子元素,并且支持在内容超出可视区域时进行滚动。当我们在ScrollView中更改子元素的可见性后,可能会出现跳转的情况。

跳转的原因是,ScrollView在计算子元素的布局时,会根据子元素的可见性来确定它们的位置和大小。当一个子元素的可见性从可见变为不可见时,ScrollView会重新计算布局,导致滚动位置发生变化,从而出现跳转的效果。

为了解决这个问题,我们可以在更改子元素可见性之前,先记录当前的滚动位置。然后在更改可见性后,再将滚动位置恢复到之前记录的位置,以保持用户在滚动视图中的位置不变。

以下是一个示例代码,演示了如何在安卓ScrollView中更改子元素可见性后避免跳转:

代码语言:txt
复制
// 获取ScrollView对象
ScrollView scrollView = findViewById(R.id.scrollView);

// 记录当前的滚动位置
int scrollX = scrollView.getScrollX();
int scrollY = scrollView.getScrollY();

// 更改子元素的可见性
View childView = findViewById(R.id.childView);
childView.setVisibility(View.GONE);

// 恢复滚动位置
scrollView.scrollTo(scrollX, scrollY);

在这个示例中,我们首先获取了ScrollView的滚动位置,并将其保存在scrollX和scrollY变量中。然后,我们通过findViewById方法获取要更改可见性的子元素,并将其可见性设置为View.GONE,即不可见。最后,我们使用scrollView.scrollTo方法将滚动位置恢复到之前保存的位置,以保持用户在滚动视图中的位置不变。

推荐的腾讯云相关产品:腾讯云移动应用分析(MTA),该产品提供了全面的移动应用数据分析服务,可以帮助开发者深入了解用户行为、应用性能等信息,优化移动应用的用户体验和运营效果。产品介绍链接地址:https://cloud.tencent.com/product/mta

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

React Native性能优化:应该做和不应该做的

这个库在iOS和上都可用并且能够有效的缓存图片 使用适当大小的图片 如果React Native APP依赖于使用大量的图像,那么优化图像对于APP的性能是很重要的。...这是一个给iOS、和React Native使用的平台 。它直接集成在原生代码中,并且在React Native中开箱即用。 使用Flipper调试app不需要远程调试。...React Native 0.60.4版本之后,Hermes在也可用了。...这有利于减少app的下载体积(APK)、降低内存消耗和降低APP的交互时间 在APP中开启Hermes引擎,需要打开build.gradle并且修改如下: def enableHermes =...> ScrollView会一次性渲染所有的组件,在需要渲染的组件数量不多的时候会比较好用。

4.1K30

【Android TV 开发】焦点处理 ( 父容器与组件焦点获取关系处理 | 不同电视设备上的兼容问题 | 触摸获取焦点 | 按键获取焦点 )

Android TV 开发系列文章目录 【Android TV 开发】电视调试 ( 开启网络远程调试 ) 【Android TV 开发】焦点处理 ( 父容器与组件焦点获取关系处理 | 不同电视设备上的兼容问题...---- 在布局文件中 , 父容器的节点中使用 android:descendantFocusability 属性 , 用于设置 父容器 与 组件 之间的 焦点获取先后顺序 ; <ScrollView...布局中设置了很多需要获取焦点的组件 ; 运行正常的情况 : 在 Google 提供的模拟器上运行时 , 正常运行 , ScrollView组件中可以正常获取焦点 ; 运行失败的情况 : 但是在真实的国产电视盒子中..., ScrollView 始终组织其组件获取焦点 , 即使设置了 android:descendantFocusability=“afterDescendants” , 组件也无法获取焦点 ; 最终的解决方案...电视遥控器 ) , 游戏手柄 等 , 使用方向键 , 控制焦点改变 ; 如果该 android:focusable 属性设置为 true , 则说明该组件可以获取焦点 , 按照不同的方向按键 , 焦点跳转到本组件设定的对应方向上的件

3.2K40
  • 基础篇章:关于 React Native 之 Touchable 系列组件的讲解

    (TouchableWithoutFeedback只支持一个节点,如果你希望有多个子元素,请用view包裹住它们再使用)。 属性 我们一起来看看,它有哪些属性方法呢?...友情提示:TouchableHighlight只支持一个节点,如果你希望有多个子元素,请用view包裹住它们再使用。...目前它只支持一个单独的View实例作为节点。在底层实现上,实际会创建一个新的RCTView结点替换当前的View,并附带一些额外的属性。...我们推荐使用以下的静态方法之一来创建这个对象: TouchableNativeFeedback.SelectableBackground() - 会创建一个对象,表示主题默认的对于被选中对象的背景。...attr/selectableItemBackground) TouchableNativeFeedback.SelectableBackgroundBorderless() - 会创建一个对象,表示主题默认的对于被选中的无边框对象的背景

    2K90

    基础篇章:关于 React Native 之 Touchable 系列组件的讲解

    (TouchableWithoutFeedback只支持一个节点,如果你希望有多个子元素,请用view包裹住它们再使用)。 属性 我们一起来看看,它有哪些属性方法呢?...* accessibilityComponentType 顾名思义:设置访问的组件类型 * accessibilityTraits 设置访问的特征 * accessible bool 当前组件是否可以访问...友情提示:TouchableHighlight只支持一个节点,如果你希望有多个子元素,请用view包裹住它们再使用。...我们推荐使用以下的静态方法之一来创建这个对象: TouchableNativeFeedback.SelectableBackground() - 会创建一个对象,表示主题默认的对于被选中对象的背景。...attr/selectableItemBackground) TouchableNativeFeedback.SelectableBackgroundBorderless() - 会创建一个对象,表示主题默认的对于被选中的无边框对象的背景

    1.6K90

    笔记 | Xamarin

    " /> 注意:下面有误 如上,在项目里有个...虽然ScrollView的Content属性只能设置一个值,即ScrollView只能包含一个元素,但它实际是一个布局控件,一个特殊的布局元素。...在使用的时候,ScrollView要求父容器给它分配固定的大小,同时元素并且有固定的大小。这样,ScrollView才能根据各自大小计算滚动量。...输入上面的命令你桌面要上传到酷的apk会变成已签名(并且和酷提供的未签名安装包差不多大) 其实就是将 酷给你的 CoolApkDevVerify_no_sign.apk ,用你给你自己的apk...Android & iOS Apps with Xamarin | .NET C#使用Xamarin开发移植移动应用进阶篇(8.打包生成安APK并精简大小),附源码 - 程序员大本营 本文作者: yiyun

    24K20

    react native简单入门

    主要的用途: 父组件向组件传递数据 父组件向组件传递调用函数,用来通知父组件消息。 用来作为组件逻辑判断的标示,渲染的样式等 children用来作为组件的部分视图。...每次修改完状态,稍后会执行render重新渲染。...限制最多显示的行数 onPress TextInput 输入框组件 value onChangeText underlineColorAndroid="transparent" TextInput在上默认有一个底边框...Modal ScrollView horizontal 当此属性为true的时候,所有的视图会在水平方向上排成一行,而不是默认的在垂直方向上排成一列。默认值为false。...GenealogySearchBoxpreKey={props.preKey}/>}/> key为该路由标识 component 为该路由展示的组件 title为导航栏标题 renderRightButton重写右侧按钮

    3.6K10

    iOS一种动态栅格布局方案

    这个布局实现很简单,但是如果这个布局需要不定期的更改,比如A换到右边,大小发生变化等不确定因素,我们不可能就发布一个新的版本去修改这个页面。...第二种方案完全根据数据决定布局,块可以无限分割下去,布局灵活,但是数据比较复杂。 实际上第二种布局是最近公司小哥想出来 一个思路,我和他分别实现了一下,发现效果很好。这里是小哥的简书。...不得不说,小哥的当时提出了这个思路吸引到了我,和他分别实现了过后发现十分好用。这刚好解决了我公司项目中遇到的问题,如果衍生出去,其实可以代替很多地方的布局方式。...比如我公司是定义了一个页面跳转协议,客户端,前端,后端都是遵循这个协议,我举个例子,加了一个跳转参数"pushurl":"huim://detail?...id=1234",我就知道这块需要跳转到商品id为1234的详情页。实现了高度动态化布局和跳转。我也不知道该称之为什么布局,所以暂时称之为栅格化布局。

    1.1K60

    Android面试官必问的事件分发,你答得上来吗?

    ;而如果接下去用户的手指进行滑动产生 Move事件,那就必须要由 ScrollView 来响应滚动事件了,为了能达到这个效果 ScrollView 在 dispatchTouchEvent( Move...; } else { // 如果 onInterceptTouchEvent() 返回 false 则代表当前 View 不拦截事件 // 则该事件则会继续传递给它的元素...// 元素的 dispatchTouchEvent() 就会被调用,重复上述过程 // 直到事件被最终处理为止 consume = child.dispatchTouchEvent...(ev); //遍历处理 } return consume; } 面试官:你这伪代码虽然通俗易懂,但是省略了太多逻辑了, View 在消费掉 Down 事件,后续的事件都给会传递给它...Down 事件,后续的事件都会传递给它,你知道是怎么实现的吗 ️:ViewGroup 里面用了一个成员变量 mFirstTouchTarget 来保存消费事件的 View 信息,因为是支持多指操作的

    1.1K00

    Android的ScrollView简单使用实例(附Demo)

    1.垂直滚动:Scroll 新建一个应用程序: 在MainActivity的布局文件上做个实验,现在设置了按钮1和按钮2还剩下一些空位: ? 再设置一个按钮3让他超出屏幕之外: ?...1.改变这个布局文件的根布局:把根布局改成:ScrollView 注意:ScrollView元素只能有一个,所以得增加一个LinearLayout布局,把其他按键放在这个LinearLayout中,...那么ScrollViewd的元素就只有一个LinearLayout了,而LinearLayout的元素不限制。...2.水平滚动:HorizontalScrollView 在LinearLayout里新建一个HorizontalScrollView,同样他的元素只能有一个 ?...> 运行应用程序,因为外面还嵌套了一层ScrollView所以能垂直滚动和水平滚动: ?

    1.6K20

    微信 H5 页面兼容性解决方案

    1、ios端兼容input光标高度 问题详情描述:input输入框光标,在手机上显示没有问题,但是在苹果手机上 当点击输入的时候,光标的高度和父盒子的高度一样。...对于有-webkit-overflow-scrolling的网页,会创建一个UIScrollView,提供layer给渲染模块使用。...ios里,收起键盘的时候会被顶上去,特别是第三方键盘 4、弹出的键盘遮盖文本框 问题详情描述: 微信H5弹出软键盘挡住input输入框,如下左图是期待唤起键盘的时候样子,右边是实际唤起键盘的样子...但如果该元素已经在浏览器窗口的可见区域内,则不会发生滚动 5、Vue中路由使用hash模式,开发微信H5页面分享时在上设置分享成功,但是ios的分享异常 问题详情描述: ios当前页面分享给好友,...点击进来是正常,如果二次分享,则跳转到首页;使用vue router跳转到第二个页面在分享时,分享设置失败;以上分享都是正常 ?

    3.3K30

    【H5】344- 微信 H5 页面兼容性解决方案

    1、ios端兼容input光标高度 问题详情描述:input输入框光标,在手机上显示没有问题,但是在苹果手机上 当点击输入的时候,光标的高度和父盒子的高度一样。...对于有-webkit-overflow-scrolling的网页,会创建一个UIScrollView,提供layer给渲染模块使用。...ios里,收起键盘的时候会被顶上去,特别是第三方键盘 4、弹出的键盘遮盖文本框 问题详情描述: 微信H5弹出软键盘挡住input输入框,如下左图是期待唤起键盘的时候样子,右边是实际唤起键盘的样子...但如果该元素已经在浏览器窗口的可见区域内,则不会发生滚动 5、Vue中路由使用hash模式,开发微信H5页面分享时在上设置分享成功,但是ios的分享异常 问题详情描述: ios当前页面分享给好友...,点击进来是正常,如果二次分享,则跳转到首页;使用vue router跳转到第二个页面在分享时,分享设置失败;以上分享都是正常 ?

    2.7K30

    微信H5页面兼容性解决方案

    1、ios端兼容input光标高度 问题详情描述:input输入框光标,在手机上显示没有问题,但是在苹果手机上 当点击输入的时候,光标的高度和父盒子的高度一样。...对于有-webkit-overflow-scrolling的网页,会创建一个UIScrollView,提供layer给渲染模块使用。...ios里,收起键盘的时候会被顶上去,特别是第三方键盘 4、弹出的键盘遮盖文本框 问题详情描述: 微信H5弹出软键盘挡住input输入框,如下左图是期待唤起键盘的时候样子,右边是实际唤起键盘的样子...但如果该元素已经在浏览器窗口的可见区域内,则不会发生滚动 5、Vue中路由使用hash模式,开发微信H5页面分享时在上设置分享成功,但是ios的分享异常 问题详情描述: ios当前页面分享给好友,点击进来是正常...,如果二次分享,则跳转到首页;使用vue router跳转到第二个页面在分享时,分享设置失败;以上分享都是正常 ?

    3.4K43

    Flutter基础(二)

    Flutter框架将依次构建这些widget,直到构建到最底层的widget时,这些最低层的widget通常为RenderObject,它会计算并描述widget的几何形状。...StatefulWidget 拥有 StatelessWidget 的所有功能,也就是说 StatelessWidget 是他的子集,每个StateFulWidget 维护一个 State 对象,当我们对 相关数据更新...MaterialApp 主要属性如下: title : 在任务管理窗口中所显示的应用名字 theme : 应用各种 UI 所使用的主题颜色 color : 应用的主要颜色值(primary color),也就是任务管理窗口中所显示的应用颜色...home : 应用默认所显示的界面 Widget routes : 应用的顶级导航表格,这个是多页面应用用来控制页面跳转的,类似于网页的网址 initialRoute :第一个显示的路由名字,默认值为...child承载单个子控件,children承载多个子控 一些常用的布局Widget: Container:如果要添加填充,边距,边框或背景色,请使用Container来设置,只有Container有这些属性

    99130

    react-navigation,刷新你的导航一、属性介绍二、案例

    当然只有在5.0以上才有效果 gesturesEnabled:是否支持滑动返回手势。...iOS默认支持,默认关闭 screen:对应界面名称,需要填入import之后的页面 mode:定义跳转风格 card:使用iOS和默认的风格。...iOS默认在底部,默认在顶部 swipeEnabled:是否允许在标签之间进行滑动 animationEnabled:是否在更改标签时显示动画 lazy:是否在app打开的时候将底部的标签栏全部加载...5.0) pressOpacity:按压标签的透明度变化(版本需要小于5.0) scrollEnabled:是否启用滚动选项卡 tabStyle:tab的样式 indicatorStyle:标签指示器的样式对象...2.2 TabNavigator案例 react-navigation组件除了可以用做页面间的跳转,当然也可以用做tab界面之间的切换。 导入react-navigation的组件。

    19.7K90

    挥别web移动端开发差异和经典坑

    wx.onSocket断后再次发送链接IOS和差异 描述:小程序 wx.onSocket 链接 在手动断网,IOS会不停发送请求再链接onSocketOpen,不会 ,解决方法,做一个定时器启动链接...时间:201908 部分机器点击键盘发送相同内容 描述:部分机,如oppo 快速点击键盘发送,会发出2条一样的内容,防抖与节流均不生效; 时间:201907 微信公众号 在微信授权回调带#...的URL跳转会出现空白 描述:手机,在微信授权回调的函数中进行跳转至的URL不能带有#,但#号可放置在结尾。...如: http://www.xuejiehome.com/#/home,跳转至微信授权,回调接口再次跳转至该页面原地址时,微信中显示空白。IOS无此问题。...如:http://www.xuejiehome.com/#/home ,跳转至微信授权,回调接口再次跳转至http://www.xuejiehome.com/#/h...

    2.9K20

    新增眼神控制功能!走路玩手机会警报,相册也可以加锁

    系统又迎来了一系列小更新!...首先就是不用再担心走路玩手机撞到电线杆了,更新了一个 Heads Up 功能,这项功能能够识别行走的动作,启用 Head Up 功能,无论何时使用手机,当手机检测到用户在走动时,都会收到警报,提醒用户去查看并保持警惕...也就是说功能开启,没办法边走路边玩手机。Pixel 用户在今年初已经更新了,目前已经扩展到了9 以上安装了数字健康的设备。...这项功能在Google TV 和其他电视操作系统设备上都可以使用,通过在你的手机上的快速设置中添加远程互动程序,或者通过访问谷歌电视应用程序来访问,并且已经在14个国家可以使用了。...通过改进附近共享中的可见性设置,用户可以完全控制谁可以发现设备并发送文件。可以在所有人、联系人或nobody之间进行选择,也可以随时通过手机的快速设置空间轻松更改偏好。

    1.5K50

    Windows 11 及其子系统折腾记

    更改语言和地区 3、第三回合:安装正确的 Beta 系统 三、玩机 四、总结 值此程序员日,记录一下这两天折腾最新的 Windows11 系统及预览发行的子系统(Windows Subsystem...再次使用 “链接二” 进行跳转,出现个要求填写邮箱的弹窗,大致是用于接收 “垃圾邮件” 的: 再次进入到子系统(WSA)应用页面,还是不满足要求: 这时我终于注意到了一个关键信息 —— 需要系统是...由于当前是正式版,需要切换为预览版才行,也就是加入 “Windows 预览体验计划”: 选择 Beta 渠道(本次子系统仅支持这个渠道): 然后使用系统更新,更新到了 22000.282: 再次点击链接二并跳转到商店中...,终于可以安装了: 下载中: 启动: 启动仅仅是打开了设置界面: 点击 “文件” 区域右上角的按钮,开始启动子系统,不过弹出了错误弹窗,要求开启虚拟化(一个是启用虚拟机平台,一个是在 BIOS...再点击安装当贝桌面里的当贝市场: 设置允许未知来源: 允许: 安装: 成功打开(可以看出来当贝是做智能电视 APP 的,用于这个子系统感觉挺合适的): 来个应用升级试试: 更新,当贝桌面更好用了

    3.3K10

    Android训练课程(Android Training) - 构建你的第一个应用

    或者在命令提示行里启动它 1.更改文件夹路径到 你的项目的根目录 下,并且执行: ant debug 确保安SDK 的platform-tools/ 文件夹被包含在你的环境变量PATH里,这时执行...或者再命令提示行下启动它: 1.更改文件夹路径到 你的项目的根目录 下,并且执行: ant debug 2.确保安SDK 的platform-tools/ 文件夹被包含在你的环境变量PATH里,...提供了一个XML词汇表,它于view和ViewGroup的子类是一致的,这样你可以在XML中使用界面元素的层级来定义你的界面。 图一....第一步,删除 元素,并且更改 元素为 。...你可以为的旧版本提供相同的导航行为,使用 Support Library 和 展示的那样来添加元素

    2.2K00
    领券