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

EditText内部列表。EditText.TextChanged在滚动上给出错误的值

EditText是Android平台上的一个用户界面控件,用于接收用户输入文本的组件。内部列表指的是EditText中的文本内容,可以通过滚动来查看超出显示范围的文本。

在使用EditText控件时,可以通过设置TextChangedListener来监听文本内容的变化。其中的onTextChanged方法会在文本内容发生变化时被调用。然而,当EditText控件中的文本内容很长,需要滚动才能完全显示时,滚动操作会触发onTextChanged方法,导致错误的值被传递。

为了解决这个问题,可以在滚动操作时暂时禁用TextChangedListener,避免错误的值被传递。具体实现可以通过在滚动开始时移除TextChangedListener,在滚动结束后重新添加TextChangedListener。

以下是一个示例代码:

代码语言:txt
复制
// 创建一个TextChangedListener
TextWatcher textWatcher = new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        // 在文本变化前的操作
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // 在文本变化时的操作
    }

    @Override
    public void afterTextChanged(Editable s) {
        // 在文本变化后的操作
    }
};

// 获取EditText控件
EditText editText = findViewById(R.id.editText);

// 添加TextChangedListener
editText.addTextChangedListener(textWatcher);

// 获取滚动操作的ScrollView
ScrollView scrollView = findViewById(R.id.scrollView);

// 设置滚动监听器
scrollView.setOnScrollChangeListener(new View.OnScrollChangeListener() {
    @Override
    public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
        // 在滚动开始时移除TextChangedListener
        editText.removeTextChangedListener(textWatcher);
    }
});

// 在滚动结束后重新添加TextChangedListener
scrollView.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_UP) {
            editText.addTextChangedListener(textWatcher);
        }
        return false;
    }
});

这样,在滚动操作期间,EditText的TextChanged事件就不会被触发,避免了错误的值被传递。

关于EditText内部列表的优势和应用场景,可以根据具体的需求来确定。例如,当需要接收用户输入多行文本时,可以使用EditText控件,并通过滚动来查看超出显示范围的文本。

腾讯云提供了丰富的云计算产品和服务,其中与移动开发相关的产品包括腾讯移动分析、腾讯移动推送等。您可以通过访问腾讯云官网(https://cloud.tencent.com/)了解更多相关产品和服务的详细信息。

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

相关·内容

强大提示控件TextInputLayout使用以及源码分析

,比如给hint设置文字,mHintAnimationEnabled,hint内文字动画是否可用,还有hintAppearance,mErrorTextAppearance是错误提示文字样式,...errorEnabled是否开启错误提示 setErrorEnabled(errorEnabled); 并通过setErrorEnabled把errorEnabled设置给TextInputLayout...addView方法,如果不是EditText,也调用父类addView方法,查看setEditText方法 内部 private void setEditText(EditText editText...设置文本变化监听,文本改变之前,正在改变时候都可以做相应逻辑处理,往下看有更改EditTextMargin方法 private LayoutParams updateEditTextMargin...,在这里我们找到了,同时这里代码也是值得我们进行学习,只有当用户设置错误提示为真的时候,才会new一个TextView,这样是比较省性能,接下来是setError方法,设置错误提示文本信息,里面是一些判断和动画设置

1.7K50

关于el-upload看这一篇就够了

通过 XMLHttpRequest 可以不刷新页面的情况下请求特定 URL,获取数据。这允许网页不影响用户操作情况下,更新页面的局部内容。...其支持关键属性/方法/事件:属性/方法/事件说明upload代可以通过对其绑定事件来追踪它进度setRequestHeader()设置 HTTP 请求头。...如果请求是异步(默认),那么该方法将在请求发送后立即返回load请求成功完成时触发error当 request 遭遇错误时触发el-upload 多数 prop 是借助上述两个原生形式实现。...before-upload,且不区分是否自动【手动上传】this.refs['upload'].submit手动上传,官方给出方式是调用 el-upload 组件 submit()submit()...这意味,非自动上传场景下,验证文件基础信息(大小、类型、个数等),需要在 on-change 中处理!

2.9K20

点击事件四种写法

比如某个列表adapter中,构造方法需要传入某个List data, 那么以后需要进行data非空判断么,我看到某个开源项目判断了,觉得有点多此一举。...仗剑行侠: 个人理解,应该没有区别,即便你就是通过匿名内部类实现,你控件是否可以用,也是取决于activity生命周期啊。.../******************************************************/ 上一节电话拨号器有几点可以进行优化: EditText控件可以界面之后就进行获取,对象放在成员属性里面...,不用每次点击都获取 EditText获取到进行trim()去掉空格 判断号码是否为空android提供工具类 TextUtils.isEmpty(); 提示信息Toast Toast.makeText...case R.id.bt_dail: callPhone(); break; } } 3. xml中定义onClick属性 看log错误信息技巧找

64930

Kotlin中高阶函数深入讲解

Kotlin 使用类似 (Int) – String 一系列函数类型来处理函数声明,这些类型具有与函数签名相对应特殊表示法,即它们参数和返回: 所有函数类型都有一个圆括号括起来参数类型列表以及一个返回类型...参数类型列表可以为空,如 () – A ,返回为空,如(A, B) – Unit; 函数类型可以有一个额外接收者类型,它在表示法中点之前指定,如类型 A....lambda表达式返回就是let函数返回。由于lambda表达式接受参数T,所以也可以在其内部使用it。...,因此表达式内部使用it,其实it就是for循环索引,从0开始。...; 对于函数内部能够使用it函数,it可以用意思更加清晰变量代替,比如T.run,also,let。

1.1K20

笔记22 | 学习整理开源APP(BaseAnimation)程序源码“中通讯录效果(三)

,根据触摸区域和字母高度计算出position,再向联系人Listview提供一个方向输出position!...21 | 学习整理开源APP(BaseAnimation)程序源码“中通讯录效果(二) ---- 3.3 联系人搜索 搜索部分难点是拿出搜索内容,首先自定义了ClearEditText,给出了一个...textchange监听,然后进行匹配>筛选>排序>加载到联系人列表中。...,更新为原来列表,否则为过滤数据列表 filterData(s.toString()); } @Override...* 当我们按下位置 EditText宽度 - 图标到控件右边间距 - 图标的宽度 和 * EditText宽度 - 图标到控件右边间距之间我们就算点击了图标,竖直方向没有考虑

64040

【Android 应用开发】Android 数据存储 之 SQLite数据库详解

Map集合, 键 是 列名, 是 要更新数据, 这个可以为null, 如果为null 这些数据会被清空; -- 参数③ whereClause: where选择语句, 选择那些行进行数据更新,...//调用该方法设置事务成功, 如果没有调用该方法, 调用endTransaction()方法时候会回事务 db.setTransactionSuccessful(); } finally...SQLite数据存储格式 支持数据类型 : SQLite数据库 内部 只支持null,integer,real(浮点型),text(文本),blob(二进制数据) 五种数据类型; 数据类型转换 :...SQLite可以接受varchar(n), char(n), decimal(p,s) 等数据类型, 不过内部机制使将这个数据类型转换成上面的五种数据类型进行存储; 无类型限制: SQLite允许将各种类型数据保存到各种类型字段中...新闻列表程序实例 1.

2.4K10

Android开发笔记(四十四)动态UI事件

翻页过程中,状态变化依次为:正在滑动->滑动完毕->静止。 onPageScrolled : 翻页过程中调用。...: 指定下拉列表高度 dropDownWidth : 指定下拉列表宽度 singleLine : 指定列表每个元素是否单行显示,true表示单行显示,false表示多行显示 代码中对应方法是...: 设置下拉列表宽度 setSingleLine : 设置列表每个元素是否单行显示 示例代码主要实现了三个功能: 1、文本框一开始获得焦点时,自动弹出历史搜索关键词下拉列表; 2、...比如弹出商品关键词列表时,往往还希望每行后面显示该关键词对应商品数量,从而让用户更有目的地选择合适商品。...基于此,博主在下面又给出了基于EditText+ListView实现方式,该方式除了列表中显示关键词与数量外,还增加了一个叉号按钮用来立即清空文本框。

1.1K10

android之风格与主题(style与theme)

元素内部,申明一个或者多个, 每一个定义了一个名字属性,并且元素内部定义了这个风格。...3.元素内部,申明一个或者多个,每一个定义了一个名字属性,并且元素内部定义了这个风格。 4.你可以应用在其他XML定义资源。...@符号表明了我们应用资源是前边定义过(或者在前一个项目中或者Android 框架中)。问号?表明了我们引用资源在当前主题当中定义过。...中应用主题: 为了成用当中所有的Activity当中使用主题,你可以打开AndroidManifest.xml 文件,编辑标签,让其包含android:theme属性,是一个主题名字...我们可以修改在Theme.Dialog中定义每个item元素,然后我们Android Manifest 文件中使用CustomDialogTheme 而不是 Theme.Dialog 。

18630

165. 精读《数据搭建引擎 bi-designer API-组件》

bi-designer 是阿里数据中台团队自研前端搭建引擎,基于它开发了阿里内部最大数据分析平台,以及阿里云上 QuickBI。...Card 功能时,我们两处内部可拖拽区域调用 ComponentLoader 加载一个事先定义好容器组件 div : import { ComponentLoader, useDesigner }...,如果加载是容器组件,就相当于增加了一块内部插槽。...运行时能力中,筛选关联功能属于 ComponentMeta.eventConfigs 中 filterFetch 部分能力 ,即筛选条件作用范围,列表组件会在当前组件触发 onFilterChange...注:需要考虑数据回组件,发布前要把 undo 逻辑写好并测试后提前上线,之后再进行项目正式上线,以保证回后可以正确执行 undo 。

1.8K10

一篇文章彻底搞懂Mysql事务相关原理

今天想跟大家一起研究下事务内部到底是怎么实现讲解前我想先抛出个问题: 事务想要做到什么效果? 按我理解,无非是要做到可靠性以及并发处理。...undo log主要记录是数据逻辑变化,为了发生错误时回之前操作,需要将之前操作都记录下来,然后发生错误时才可以回。 还用上面那两张表 ?...此外,删除在内部被视为更新,该更新中,行中特殊位被设置为将其标记为已删除。每行还包含一个7字节 DB_ROLL_PTR字段,称为滚动指针。回指针指向写入回撤消日志记录。...所谓回操作就是当发生错误异常或者显式执行rollback语句时需要把数据还原到原先模样,所以这时候就需要用到undo log来进行回,接下来看一下undo log实现事务原子性时怎么发挥作用...超过200个事务等待列表将被视为死锁,并且尝试检查等待列表事务将回。如果锁定线程必须查看等待列表事务所拥有的1,000,000个以上锁,也可能发生相同错误

77810

如何合理构造一个Uploader工具类(设计到实现)

但是,想引入开源工具时觉得增加了许多体积且定制性不满足,每次写上传逻辑又会写很多冗余性代码。不同toC业务上,还要重新编写自己上传组件样式。...然后可以给出以下大概内部接口: class Uploader { // 构造器,new时候,合并默认配置 constructor (option = {}) {} // 根据配置初始化,...callHook,将事件挂载实例属性上。...- loadFiles 传进来文件列表参数,判断个数响应事件,其次就是要封装出内部列表数据格式,方便追踪状态和对应对象,这里我们要用一个外部变量生成id,再根据autoUpload参数选择是否自动上传...onerror事件:处理错误状态,改写文件列表,抛出错误,响应外部error事件 onprogress事件:根据返回事件,计算好百分比,响应外部onprogress事件 因为xhr返回格式不太友好,

88210

安卓第六夜 凡高自画像

主界面中再次调出数据,并显示。相关知识点包括: 启动Activity。利用Intent,启动一个新Activity。 文本输入。增加EditText输入栏,让用户输入文本信息。 数据存储。...提交数据后,这个Activity将通过EditTextgetText()方法获取字符输入。提交字符串将使用SharedPreferences存储起来。...SharedPreferences以键值对(key-value pair)方式存储数据。写入时,我们需要说明数据对应键。在读取时,我们将根据键,来获得对应数据。数据可以整个应用范围内调用。...Button用于启动上面定义SelfEditActivity。 修改MainActivity。相对于上一讲,这里主要增加了两个功能。...使用getString()方法,从SharedPreferences对象获得键位"name"。如果"name"键不存在,将返回默认"unknown"。 ?

1.1K70

Android开发笔记(一百四十六)仿支付宝支付密码输入框

当然,界面展现上,需要以横排方格形式加以显示。于是可以考虑,把支付密码输入与显示操作分离开来,即密码输入操作仍由EditText处理,而密码显示操作则由自定义方格布局接管。...对于处理密码输入EditText来说,需要实现以下几项操作: 1、把默认下划线背景替换为圆角背景,且支持获得焦点时高亮显示; 2、屏蔽输入光标,可调用setCursorVisible方法设置为不可见...,把回车符('\r')替换为Unicode编码空格('\uFEFF'),其中getOriginal表示返回需要替换字符列表,getReplacement表示返回替换后字符列表。...其次,对于支付密码输入框焦点获得问题,因为该输入框内部集成了EditText,所以不管是给输入框注册点击事件还是触摸事件,手势焦点都会被内部EditText所抢占,使得密码输入框反而不会响应点击和触摸事件...详细事件处理机制限于篇幅不再叙述,这里直接给出具体解决步骤: 1、重写支付密码输入框布局onInterceptTouchEvent方法,对所有触摸事件予以拦截,不让触摸事件传递给下级视图,代码如下所示

1.8K30

数据访问函数库使用方法(二)—— 获取记录集和使用事务方法

可以通过字段名称来获取             DataRow dr = dal.RunSqlDataRow(sql);             //只获取第一条记录第一个字段             ...str);    //添加数据             if (dal.ErrorMsg.Length > )             {                 //出现异常,函数内部会自动回事务...= 2 ");    //修改数据             if (dal.ErrorMsg.Length > )             {                 //出现异常,函数内部会自动回事务.../// 优点:函数内部自动处理连接打开和关闭问题。             /// sql语句出现错误时候,会在/log/里面建立一个文本文件,记录出错信息。             .../// 可以通过查看这个文件,快速分析出来出错原因,使用sql语句情况下帮助很大。

994100

Android如何自定义EditText光标与下划线颜色详解

Android Studio中新建一个工程,让MainActivity继承于AppCompatActivity(为什么要这样做,后面再说),然后MainActivity布局中放置一个EditText...原生EditText下面放置一个新EditText: <EditText android:textCursorDrawable="@drawable/cursor_color" android...网上有些自定义EditText下划线教程就是这样操作,先把背景去除,再在下面加一个横线。这样操作未尝不可,但是为了美观,还是得重新设置间距。。...,shape就是列表一个item,由于我们只需要下边框有横线,所以除了shape列表下边距外都设为负值。...运行,就可以看到一模一样效果了。 7、后记 文章至此就结束了,但是我要学东西还有很多,文章里某些知识出于我个人理解,可能会有不足或者错误,欢迎大家指正!

5.3K51

RecyclerView中监听EditText变化BUG解决方法

需求:有一个列表列表中有一个edittext(只能输整形),外部有一个整形变量Int,每次改变列表中其中一项edittext时,外部Int都会改变。...既然这样,我们就需要对edittext进行addTextChangedListener监听,一般做法是afterTextChanged中对外部进行循环累加,但是想想,每一次你改变edittext都要进行一次时间复杂度为...n循环的话,想想就觉得这个算法很那啥,所以我想了另一个算法,每次改变其中一个item时,用总减去原itemedittext加上itemedittext新输入,这样复杂度为1,看着就很舒服...这样写的话beforeTextChanged方法中获取就不是复用前item数据,而是当前数据。...总结 可能你看不懂我需求和例子,说明你没碰到过这样情况(列表edittext影响外部某个状态),我也不太好解释,但是你基本会碰到过数据错乱情况,这就是我要说

1.6K20

Android实现简单用户注册案例

本文实例为大家分享了Android实现简单用户注册具体代码,供大家参考,具体内容如下 目标: 设计一个用户注册案例。主界面中对输入手机号、密码、性别、爱好和城市后,可以界面二中进行显示。...提示: 1、页面布局元素用到TextView、EditText、Button、RadioButton、CheckBox、Spinner; 2、通过intent实现主界面跳转到界面二 3、涉及传递多个数据时...} } @Override public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) { //根据用户选择来改变sex_str...register可使用内部类,并重写onClick()方法 。 spinner可使用实现接口监听事件。...} } @Override public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) { //根据用户选择来改变sex_str

1.5K50
领券