首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Listview中在EditText上模拟用户触摸操作

在Listview中在EditText上模拟用户触摸操作
EN

Stack Overflow用户
提问于 2013-09-18 04:47:23
回答 1查看 4.3K关注 0票数 3

我在每个ListView项目中都有一个带有不可见EditText和一个可单击TextView的TextView。我正在尝试实现一种行为,单击TextView将使EditText可见,聚焦于EditText并使软键盘自动显示。

我使用adjustResize作为我的输入方法,而不是adjustPan,因为很明显,我正在测试的S3功能与adjustPan一起疯狂。(具体来说,当软键盘出现时,整个视图就会被推上,太棒了。但是,一旦我开始打字,整个视图就会滑回来,好像软键盘不在那里一样!但它是!宏达电的问题不会发生)。listview也有afterDecendents

当列表视图有更多可以完全适应屏幕的项目时,触发的软键盘无法响应editText时就会出现问题。

我编程触发软键盘与imm.showSoftInput(holder.editText,0)和整个视图重新调整自己,以容纳软键盘。一旦显示软键盘并且视图完成其中继,编辑文本就不会接收除backspace以外的所有键条目。这意味着我不能在编辑文本中添加任何单词或数字,但我可以删除它们,这是非常奇怪的。

另一件有趣的事情是,我意识到,如果我不以编程方式显示软键盘,让用户点击可见的编辑文本来显示软键盘,一切都会很好。(这也让我感到困惑,因为我怀疑李斯特视图回收和聚焦机制是导致所有这些问题的原因之一。当软键盘出现时,将导致listview中继,从而回收视图,从而丢失对editText的引用等。)

所以,最终,我的问题是,是否有任何方法,我可以可靠地模拟用户点击可见编辑文本,以便我可以触发一个软键盘,正常工作与“点击”的编辑文本?

我也尝试过以下方法,但它不可靠(有时起作用,有时不起作用。)玩延迟时间没有任何作用。)

代码语言:javascript
运行
复制
holder.editText.postDelayed(new Runnable(){
    @Override
    public void run() {
         holder.editText.requestFocus();
         holder.editText.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN , 0, 0, 0));
         holder.editText.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP , 0, 0, 0));
         }
}}, 500);

其他排列的答案,我已经尝试了很多,所以问题也没有真正可靠的工作。例题:How to show soft-keyboard when edittext is focusedHow come the Android soft keyboard is not responding to EditText?Android: Dialog box show soft keyboard automatically when focus is on an EditText not working

EN

回答 1

Stack Overflow用户

发布于 2013-09-18 05:01:20

对于我来说,有什么方法可以可靠地模拟用户点击可见编辑文本的过程吗?

这样我就可以触发一个软键盘,它可以正常地与“点击”的编辑文本一起工作吗?

是,

当您想要模拟您在EditText上的单击时添加此选项

代码语言:javascript
运行
复制
          editText.performClick();    //softkeyboard will open
          editText.setPressed(true);  // edittext will get highlighted
          editText.invalidate();        //Invalidate the whole view

完成了!!

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18864057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档