Android:为什么 EditText 使滚动变慢?

标签 android

我创建了一个可滚动的自定义 ViewGroup,其中包含多个 >200 个 EditText(并非所有文本都同时显示 - 我正在使用回收器)。我遇到的问题是滚动速度非常慢。

有趣的是,如果我执行以下操作之一,就不会出现问题
1)禁用editText [editText.setEnabled(false)]

2)如果我将 View 从 EditText 更改为 TextView

对可能出现的问题有什么想法吗?

最佳答案

EditText 是 huge 。特别看看它继承的所有那些方法。

为什么不尝试仅使用一个带有 199 个自定义 TextView 的 EditText 或在 Canvas 中绘制的一大块矩形网格?您始终可以自定义 TextView(或绘制的矩形网格),使它们看起来像编辑框,但仅对本身具有焦点的单元格使用一个 EditText。

这甚至是 Excel 的部分功能的工作方式。它可以直接编辑单元格(是),但它在 Excel 电子表格的左上角还有一个静态单元格,用于向您显示公式的内容(可能已在焦点单元格本身内呈现为 View )。你自己也可以做类似的事情。您可以扩展 EditText 来完成所有困难的事情,例如自动完成等,但您可以只在具有焦点的矩形内绘制文本(或将其插入具有焦点的特定 TextView 内)。

看一下这个例子: https://github.com/dennis-sheil/android-spreadsheet

他似乎主要使用 TextView(虽然 TextView 也很重,但我开始认为 Canvas 可能更适合这样的事情,并且一切都可以用绘图方法来模拟,我的意思是闪烁的光标、单元格的突出显示、逐个字符的键入等)。至少使用 Canvas,您可以轻松地告诉它哪些部分需要绘制,哪些部分在屏幕之外并且不需要绘制,因此您不太可能遇到内存问题。

关于Android:为什么 EditText 使滚动变慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21695328/

相关文章:

c# - 无法在 Xaml 的嵌套类上设置属性

android - Google Play 游戏服务 - 解锁的成就弹出窗口未显示

android - 是否有 "Wrong password on lock screen" Action Intent ?

android - 将 ExoPlayer 从 2.11.8 升级到 2.12.1 并替换已弃用的组件后,我无法播放任何视频

java - 访问 Android 相机时 Intent 出现 NullPointerException

java - 开始 Activity 但在后台

android - 下面的布局参数无法以编程方式工作

android - 在Android中,文件默认保存在哪里?

java - android中的activity需要Handler吗?

android - Word 在单行中没有足够的空间