首页
学习
活动
专区
工具
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 的基本步骤就如上面介绍的那样。

    48230

    横向滑动视图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.7K20

    View 上使用挂起函数

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

    2.3K30

    Android Compose开发

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

    33010

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

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

    32920

    速读原著-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...本例子的第一组文本框和按钮是布局文件中指定的,其他是代码中指定的。

    78210

    kotlin-android-extensions插件也废弃了?扶我起来

    比较容易人想到的一个缺点就是,kotlin-android-extensions插件只能支持Kotlin语言,而无法支持Java语言。...我很早之前面试的时候问到过,为什么我们要在ListView的Adapter当中去写ViewHolder(那个时候还没有RecyclerView)。...那么如何解决这个问题呢?很简单,我们只需要在include的时候给引入的布局添加一个id,如下所示: <?xml version="1.0" encoding="utf-8"?...首先为了避免崩溃,我们应该将activity_main.xml中引入布局指定的id移除,如下所示: <LinearLayout xmlns:android="http://schemas.android.com...<em>在</em>onCreate()函数中,我们调用TitlebarBinding.bind()函数,<em>让</em>titlebar.xml布局和activity_main.xml布局能够关联<em>起来</em>。

    3.4K31

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

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

    80340

    Android Studio 3.6中使用视图绑定替代 findViewById的方法

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

    2.4K31

    资源混淆是如何影响到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

    Android模仿实现微博详情页滑动固定顶部栏的效果实例

    自定义ScrollView,利用回调接口的方式使滑动数据对外暴露: 虽然谷歌官方给ScrollView提供了一个设置滑动监听方法setOnScrollChangeListener,不过这个方法需要基于...API23之上(Android6.0系统),日常开发中,我们需要对老系统用户进行兼容(当前兼容版本为Android4.1系统以上),所以这里我们需要去继承ScrollView并把这个监听事件通过接口的方式对外暴露...注册监听的时候,就可以回调接口里拿到对应的滑动数据,其中第二个参数t就是滑动y轴的距离,现在我们只需要拿到固定布局到顶部的距离就可以判断什么时候需要移除和添加View了。...3、当我们拿到所需要滑动的高度,我们需要对固定布局进行临界值做判断(这里设当前滑动值为t,所需滑动值为y) 比如当我们界面一开始向上滑的时候t值是小于y值的,此时内部固定栏是不需要移除的,而当我们超过...3、这种页面的设计最早来源于iOS的设计,iOS里ScrollView嵌套TableView(相当于ListView)是没有问题的,但是Android里,这样子的嵌套会导致ListView的复用机制作废

    1.3K20
    领券