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

如何让scrollView在textview被移除时不跳起来?(Kotlin)

在Kotlin中,要实现让ScrollView在TextView被移除时不跳起来,可以采取以下步骤:

  1. 首先,确保你的布局文件中使用了ScrollView,并且TextView位于ScrollView内部。
  2. 在代码中,找到对应的TextView实例,并使用removeView()方法将其从ScrollView中移除。
  3. 在移除TextView之前,获取当前ScrollView的滚动位置,可以使用getScrollY()方法。
  4. 移除TextView后,使用scrollTo()方法将ScrollView滚动到之前的位置,即使用之前获取的滚动位置作为参数。

下面是一个示例代码:

代码语言:txt
复制
val scrollView: ScrollView = findViewById(R.id.scrollView)
val textView: TextView = findViewById(R.id.textView)

// 获取当前滚动位置
val scrollY = scrollView.scrollY

// 从ScrollView中移除TextView
scrollView.removeView(textView)

// 恢复滚动位置
scrollView.post {
    scrollView.scrollTo(0, scrollY)
}

在这个示例中,我们首先获取了ScrollView的滚动位置scrollY,然后移除了TextView。最后,使用post()方法在ScrollView的消息队列中添加一个任务,该任务会在ScrollView绘制完成后执行。在任务中,我们使用scrollTo()方法将ScrollView滚动到之前的位置,即(0, scrollY)。

这样,当TextView被移除时,ScrollView会保持在之前的滚动位置,从而避免了跳起来的问题。

请注意,这只是一个示例代码,实际使用时需要根据你的布局和需求进行相应的调整。

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

相关·内容

一次使用Kotlin实现酷炫多选操作的尝试

大多数应用中的多选方案 -Telegram, Apple Music, Spotify等等- 通常都不是那么灵活,用起来也不舒服。...比如,当你在Apple Music中创建自己的播放列表时,如果不切换屏幕或者无尽的滚动一遍被选中的歌曲,你都不清楚自己选择了哪些歌曲。 如果我们想使用筛选功能事情就变得更糟糕了。...现在让我们来看看这个安卓的多选动画是如何诞生的。 ?...比如,如果你点击了一个未被选择的item,将发生以下事情: 被点击的item从未被选中的item列表中移除并被添加到包含了两个列表的容器中。 选中的item的位置是固定的。...这里是我在实现这个库的过程中,Kotlin的这些特性给我带来了方便: 1.扩展函数 Kotlin的扩展函数功能使得我们可以为现有的类添加新的函数,而不用修改原来的类。 就拿安卓的View来说。

1.2K20
  • 轻松实现app中的导航Tab栏悬浮功能

    像这种导航Tab栏悬浮的作用相信大家都能体会到,Tab栏不会随着ScrollView等的滚动而被滑出屏幕外,增加了与用户之间的交互性和方便性。...首先大家要明白一点:Tab栏的状态变化是要监听ScrollView滑动距离的。至于如何得到ScrollView的滑动距离?...接下来要思考的问题就是如何让Tab栏实现悬浮的效果呢?...这是因为标题栏的存在导致了在计算悬浮窗y轴的值时要额外加上标题栏的高度(当然你也可以保留标题栏,然后计算时再加上标题栏的高度_!)。...一起来看看效果吧: Demo效果图gif 但是用这种方法来实现Tab栏悬浮功能有一个缺点,那就是如果该app没有被赋予显示悬浮窗的权限,那么该功能就变成鸡肋了。

    1.9K30

    自定义 View 实战 01 - TextView

    前言 本来主要介绍了系统的textview是如何显示,字体大小、文字颜色如何设置、文字的位置该如何计算 步骤 1、继承 View 重写构造方法 class CustomTextView @JvmOverloads...,defStyle:Int=0) :View(context,attr,defStyle) 这里使用的是Kotlin,所以构造函数看起来要简洁很多 2、初始化对象及自定义参数获取 var...(widthMode == MeasureSpec.AT_MOST || widthMode == MeasureSpec.UNSPECIFIED) {//UNSPECIFIED:是为了兼容最外层是 ScrollView...heightMode == MeasureSpec.AT_MOST || heightMode == MeasureSpec.UNSPECIFIED) {//UNSPECIFIED:是为了兼容最外层是 ScrollView...自定义TextView 好了,到这里就结束了,简单的几步就可以实现文字的展示了,自定义 View 的基本步骤就如上面介绍的那样。

    49130

    横向滑动视图HorizontalScrollView精炼详解

    一、前期基础知识储备 由于移动设备物理显示空间一般有限,不可能一次性的把所有要显示的内容都显示在屏幕上。所以各大平台一般会提供一些可滚动的视图来向用户展示数据。...textView = new TextView(this); textView.setText(data.get(i)); textView.setTextColor...) findViewById(R.id.testTextView); } //将字符串数组与集合绑定起来 private void bindData() { /...Collections.addAll(data, mImgIds); } } 运行效果如图: 当然了,最简单的运用图片类的HorizontalScrollView,就是直接将图片放置在HorizontalScrollView...=null){//如果持续滚动,移除checkStopped,停止滚动以后只执行一次检测任务 scrollView.getHandler().removeCallbacks

    3.8K20

    在 View 上使用挂起函数

    虽然用起来很优雅,但我们只是在用另一种方式处理回调,这还是没有解决复杂的 UI 的回调嵌套问题。既然我们在讨论异步操作,那在这种情况下,我们可以使用协程优化这些问题么?...suspendCancellableCoroutine 在 Kotlin 协程库中,有很多协程的构造器方法,这些构造器方法内部可以使用挂起函数来封装回调的 API。...#2: 在协程被挂起的时候,异步 UI 操作被取消或者抛出异常。并不是所有的操作都有已取消或出错的状态,但是这些操作有。...一旦 Fragment 的视图被移除,与之关联的 lifecycleScope 就会自动被取消。...又由于我们已经为挂起函数中添加了对取消操作的支持,所以 lifecycleScope 被取消时,所有与之关联的协程都会被清除。

    2.4K30

    Android开发中的Kotlin扩展函数技巧!

    在Kotlin中,扩展函数是一种非常有用的功能,可以让我们向现有的类添加新的功能,而无需修改类的源代码。在本文中,我们将探讨Kotlin扩展函数的原理和运用,以及如何在Android开发中使用它们。...我们可以在适当的情况下合理地运用扩展函数,为现有的类添加新的功能,提高代码的可读性和复用性。同时,在使用扩展函数时,需要注意它们的限制并遵循最佳实践。...使用这个扩展函数时,我们可以像下面这样调用: val textView = findViewByIdTextView>(R.id.text_view) 可以改写为: val textView = findViewById...例如,我们可以像下面这样定义一个扩展函数,用于在RecyclerView中添加和移除数据: fun RecyclerView.addItems(items: List, adapter:...在Android开发中,扩展函数可以帮助我们简化代码,提高开发效率。合理的运用扩展函数的能力,可以让你的开发事半功倍,希望本文能够对你有所帮助。

    34820

    速读原著-Android应用开发入门教程(作为简单容器使用的视图组)

    8.3 作为简单容器使用的视图组 8.3.1.单选按钮组 单选按钮组(RadioButton)是一组逻辑上相关的按钮,它们之中只能有一个被选中,单选按钮通常单选按钮被设计成圆形的外观。...8.3.2.使用滚动条 当屏幕上控件的内容超过屏幕本身的尺寸时,一般可以通过出现滚动条(ScrollBar)供用户拖动来显示没有显示的内容。...ScrollView 类通常在 XML 文件中使用,当屏幕上的内容预计超过屏幕尺寸时,用一个 ScrollView 将其他内容包含起来,这样就可以出现滚动条。...textView = new TextView(this); textView.setText("Text View " + i); LinearLayout.LayoutParams...本例子的第一组文本框和按钮是在布局文件中指定的,其他是在代码中指定的。

    78410

    Android Compose开发

    此外,当两项更新以出人意料的方式发生冲突时,也很容易造成异常状态。例如,某项更新可能会尝试设置刚刚从界面中移除的节点的值。一般来说,软件维护的复杂性会随着需要更新的视图数量而增长。...写给初学者的Jetpack Compose教程,基础控件和布局 原创:写给初学者的Jetpack Compose教程,Modifier 原创:写给初学者的Jetpack Compose教程,使用State让界面动起来...滚动 在 View 中的话,通常可以在需要滚动的内容之外再嵌套一层 ScrollView 布局,这样 ScrollView 中的内容就可以滚动了。...它会自动在适当的时间启动和取消协程,确保在 Compose 组件的生命周期内正确处理副作用。当组件被创建时,LaunchedEffect 会启动协程,当组件被销毁时,它会自动取消协程。...总结起来,LaunchedEffect 是一个用于在协程中执行副作用操作的函数,它确保在 Compose 组件的生命周期内正确处理副作用。

    36310

    资源混淆是如何影响到Kotlin协程的

    导言 随着kotlin的使用,协程也慢慢在我们工程中被开始被使用起来,但在我们工程中却遇到了一个问题,经过资源混淆处理之后的apk包,协程却不如期工作。...那么两者到底有什么关联呢,资源混淆又是如何影响到协程的使用的,通过阅读本篇你会马上知晓。...很简单,gradle里面配置packageOptions主动移除META-INF文件夹下的kotlin_module文件和services文件夹,然后debug调试一下发现问题复现。...看看FastServiceLoader是如何加载AndroidDispatcherFactory的,如下图所示: ?...看到这个类瞬间明白了,kotlin在编译的时候,会在META-INF文件夹下生成一个services的文件夹信息,该文件夹下面放一些支持类的信息,那么具体在放了哪些类呢,在源码当中有一个pro文件可以说明一切

    2.1K33

    使用视图绑定替代 findViewById

    在 Activity 的 onCreate 方法中,要将 root 传入 setContentView 方法,从而让 Activity 可以使用绑定对象中的布局。...生成代码的逻辑被优化为,当您在 Android Studio 中编辑 XML 布局文件时,只会更新所修改布局对应的绑定对象。同时这些工作会在内存中运行,从而使这个过程可以迅速完成。...如果想要了解更多关于两种语言的互操作问题,请查阅文档: 在 Kotlin 中调用 Java。...bind(rootView) -- 在您已经获得对应视图,并且只想通过视图绑定来避免使用 findViewById 时使用。这个方法在使用视图绑定改造和重构现有代码时非常有用。...在两者都被开启时,使用 标签的布局会由数据绑定来生成绑定对象;而其余的布局则由视图绑定生成绑定对象。 您可以在同一 Module 中同时使用数据绑定和视图绑定。

    1.6K30

    干货 | 前端如何实现业务解耦,携程酒店查询首页的1.0到3.0

    作者简介 何金,携程酒店研发部Android资深软件开发工程师,负责酒店代码性能优化、结构改造、疑难问题排查处理,以及Kotlin的推广和应用。...它提供了各种类型的酒店筛选入口,让用户进行酒店选择。随着查询首页版本不断迭代,其对应业务,功能和样式经历了由简单到复杂,单一到丰富的过程。...该结构还会存在性能黑洞,当BottomFragment启动时,会加载所有配置的Moudle,把所有Moudle的View加载到布局容器ScrollView中,无论这些Moudle是否在第一屏展示,影响查询首页的启动性能...在对酒店查询首页优化和改造时,根据我们团队的特点,采用了渐进式的架构迭代思路,这样既保证了业务需求的交付,也避免了重构带来的风险。...同时也给前端如何实现业务解耦,如何在保证页面性能的前提条件下,承载大量不同的UI布局元素提供一种优化借鉴思路。

    80840
    领券