当前位置: 首页 > 知识库问答 >
问题:

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

易炳
2023-03-14

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

我使用< code > adjust size 作为我的输入法,而不是< code>adjustPan,因为显然我正在测试的S3与< code>adjustPan一起出了问题。(具体来说,当软键盘出现时,整个视图被推上来,这很好。但是,当我开始输入时,整个视图又滑了下来,就好像软键盘不存在一样!但事实如此。HTC One没有出现问题。listview也有< code > after decents 。

当listview有更多可以完全放入屏幕的项目时,会出现软键盘触发对editText没有响应的问题。

我使用imm.showSoftInput(holder.editText,0)以编程方式触发软键盘,并且整个视图重新调整自己以适应软键盘。一旦显示软键盘并且视图完成了重新布局,除了退格之外的所有键条目都不会被编辑文本接收。这意味着我不能在编辑文本中添加任何单词或数字,但我可以删除它们,这太奇怪了。

另一件有趣的事是,我意识到,如果我不以编程方式显示软键盘,让用户点击可见的编辑文本来显示软键盘的话,一切都会正常工作。(这也让我困惑,因为我怀疑listview循环和聚焦机制是导致所有这些问题的原因。当出现软键盘时,会导致listview重新播放,从而循环视图,从而丢失对编辑文本的引用等。)

所以,最终,我的问题是,有没有什么方法可以让我可靠地编程模拟用户在可见编辑文本上的点击,这样我就可以触发一个软键盘,让它与“点击的”编辑文本一起正常工作?

我也试过下面的方法,但它并不可靠(有时有效,有时无效。玩延迟持续时间没有任何作用。).

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);

我尝试过的许多问题的其他答案排列也不可靠。示例问题:当关注edittext时如何显示软键盘,Android软键盘为什么不响应edittext,Android:当焦点在编辑文本不工作时,对话框自动显示软键盘

共有1个答案

窦志新
2023-03-14

问:有没有任何方法可以让我以可靠的编程方式模拟用户点击可见的编辑文本

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

是的,

当您想模拟您对EditText的单击时添加此项

          editText.performClick();    //softkeyboard will open
          editText.setPressed(true);  // edittext will get highlighted
          editText.invalidate();        //Invalidate the whole view

完成!!

 类似资料:
  • 问题内容: 我想更改二进制文件的修改时间戳。最好的方法是什么? 打开和关闭文件会是一个不错的选择吗?(我需要一个解决方案,其中将在每个平台和JVM上更改时间戳的修改)。 问题答案: File类具有setLastModified方法。这就是ANT所做的。

  • 问题内容: 用这样的HTML: 然后像这样的一些CSS: 如何允许在启用触摸的设备上进行长时间触摸来复制悬停?我可以更改标记/使用JS等,但是想不出一种简单的方法来做到这一点。 问题答案: 好的,我已经解决了!它涉及稍微更改CSS并添加一些JS。 使用jQuery使其变得容易: 用英语:当您开始或结束触摸时,请打开或关闭课程。 然后,在您的HTML中,将类悬停添加到您要与此一起使用的任何内容上。在

  • 问题内容: 用这样的HTML: 然后像这样的一些CSS: 如何允许在启用触摸的设备上进行长时间触摸以复制悬停?我可以更改标记/使用JS等,但是想不出一种简单的方法来做到这一点。 问题答案: 好的,我已经解决了!它涉及稍微更改CSS并添加一些JS。 使用jQuery使其变得容易: 用英语:当您开始或结束触摸时,请打开或关闭课程。 然后,在您的HTML中,将类悬停添加到您要使用它的任何对象上。在CSS

  • 在(Welcome Park),您可尽情享受PS Vita的基本操作和功能。 触摸操作 PS Vita配有屏幕(触摸屏幕)及背面触摸板,可使用手指执行各种操作。 轻触 使用手指轻触 于选择图标或项目时使用。 双击 连续2次轻触 拖拽 使用手指持续触摸后,再放开手指 于上下左右快速卷动画面等时使用。 滑碰 使用手指轻拨 于上下左右快速卷动画面时使用。 长碰 持续长碰 将主画面切换至编辑模式等时使用。

  • 启用触摸保护 把 Yubikey-manager 安装在一个绝对路径:【译者注:homebrew 是 macOS 平台的包管理软件】 ❯ brew install libu2f-host libusb swig ykpers ❯ git clone git@github.com:Yubico/Yubikey-manager.git ❯ git submodule update --init --r

  • 本文向大家介绍Android触摸及手势操作GestureDetector,包括了Android触摸及手势操作GestureDetector的使用技巧和注意事项,需要的朋友参考一下 现在的智能手机不敢说百分百的都是触摸屏,也应该是百分之九九以上为触摸屏了,触摸屏为我们操作无键盘、无鼠标的手机系统带来了很多的便利。当用户触摸屏幕时会产生很多的触摸事件,down、up、move等等。View类有个Vie