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

Android:为什么EditText会使滚动变慢?,android,Android,我创建了一个可滚动的自定义视图组,其中有几个>200个编辑文本(并非所有文本都同时显示-我使用的是回收器)。我遇到的问题是滚动非常慢 有趣的是,如果我执行以下操作之一,我就没有问题了 1) 禁用editText[editText.setEnabled(false)] 或 2) 如果我将视图从EditText更改为TextView 有什么问题吗?可能是滚动过程中聚焦编辑文本的问题,也可能是创建的对象太多,速度太慢。将ListView与EditText一起使用。使用viewHolder模式回收视图。

我创建了一个可滚动的自定义视图组,其中有几个>200个编辑文本(并非所有文本都同时显示-我使用的是回收器)。我遇到的问题是滚动非常慢

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

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


有什么问题吗?

可能是滚动过程中聚焦编辑文本的问题,也可能是创建的对象太多,速度太慢。将ListView与EditText一起使用。使用viewHolder模式回收视图。它将是平滑的,但我不确定它是否是您想要的。

在滚动过程中聚焦编辑文本可能会出现问题,或者您创建了太多的对象,速度很慢。将ListView与EditText一起使用。使用viewHolder模式回收视图。它将是平滑的,但我不确定它是否是您想要的。

EditText是。请特别关注它继承的所有这些方法

为什么不尝试使用一个EditText和199个自定义文本视图,或者在画布中绘制一个大的矩形网格?您可以自定义文本视图(或绘制的矩形网格),使其看起来像编辑框,但对于具有焦点的单元格,只能使用一个EditText

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

看看这个例子:

他似乎主要使用文本视图(虽然文本视图也很重,但我开始认为画布可能更适合这样的东西,而且一切都可以用绘图方法模拟,我指的是闪烁的光标、单元格的高亮显示、逐个字符的键入等等)。至少使用画布,您可以轻松地告诉它需要绘制哪些部分,哪些部分不在屏幕上,不需要绘制,因此您不太可能出现内存问题

编辑文本是。请特别关注它继承的所有这些方法

为什么不尝试使用一个EditText和199个自定义文本视图,或者在画布中绘制一个大的矩形网格?您可以自定义文本视图(或绘制的矩形网格),使其看起来像编辑框,但对于具有焦点的单元格,只能使用一个EditText

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

看看这个例子:


他似乎主要使用文本视图(虽然文本视图也很重,但我开始认为画布可能更适合这样的东西,而且一切都可以用绘图方法模拟,我指的是闪烁的光标、单元格的高亮显示、逐个字符的键入等等)。至少使用画布,您可以轻松地告诉它需要绘制哪些部分,哪些部分不在屏幕上,不需要绘制,因此您不太可能出现内存问题

作为一种良好的做法,你不能这样做。与ListView一样,您必须仅保留对用户显示的视图的引用,并循环使用屏幕显示区域中不再显示的视图。200 EditText?为什么?我不认为EditText在设计时就考虑了这种用例…你的用例是什么?骗子-我写了一个自定义回收器,当EditText未启用或使用TextView时,它工作正常。这就是我感到困惑的原因。我想我应该澄清一下(我现在编辑了我的问题)Ginovva和Glenn-我正在尝试创建一个电子表格应用程序,其中每个单元格都是一个EditText,作为一个良好的实践,你不能这样做。与ListView一样,您必须仅保留对用户显示的视图的引用,并循环使用屏幕显示区域中不再显示的视图。200 EditText?为什么?我不认为EditText在设计时就考虑了这种用例…你的用例是什么?骗子-我写了一个自定义回收器,当EditText未启用或使用TextView时,它工作正常。这就是我感到困惑的原因。我想我应该澄清一下(我现在编辑了我的问题)Ginovva和Glenn-我正在尝试创建一个电子表格应用程序,其中每个单元格都是EditTextmyCode-感谢您的回复。我在重复这些观点。当我将setEnabled设置为false时,滚动非常平滑(因此我认为回收器正在工作)。我怀疑有两件事1)正如你提到的,在触摸事件处理过程中,聚焦会弄乱一些东西2)编辑文本的渲染成本很高。我不确定我的方向是否正确。如何回收视图?我维护一个视图数组。当该数组超出滚动区域时,我会向该数组添加一个视图,当我需要一个新视图时,我会从该数组中获取一个视图,并将其发送到adaptermyCode的getView函数-感谢您的响应。我在重复这些观点。当我将setEnabled设置为false时,滚动非常平滑(因此我认为回收器正在工作)。我怀疑有几个瘦女孩