我在每个ListView项目中都有一个带有不可见EditText和一个可单击TextView的TextView。我正在尝试实现一种行为,单击TextView将使EditText可见,聚焦于EditText并使软键盘自动显示。
我使用adjustResize
作为我的输入方法,而不是adjustPan
,因为很明显,我正在测试的S3功能与adjustPan
一起疯狂。(具体来说,当软键盘出现时,整个视图就会被推上,太棒了。但是,一旦我开始打字,整个视图就会滑回来,好像软键盘不在那里一样!但它是!宏达电的问题不会发生)。listview也有afterDecendents
。
当列表视图有更多可以完全适应屏幕的项目时,触发的软键盘无法响应editText时就会出现问题。
我编程触发软键盘与imm.showSoftInput(holder.editText,0)
和整个视图重新调整自己,以容纳软键盘。一旦显示软键盘并且视图完成其中继,编辑文本就不会接收除backspace以外的所有键条目。这意味着我不能在编辑文本中添加任何单词或数字,但我可以删除它们,这是非常奇怪的。
另一件有趣的事情是,我意识到,如果我不以编程方式显示软键盘,让用户点击可见的编辑文本来显示软键盘,一切都会很好。(这也让我感到困惑,因为我怀疑李斯特视图回收和聚焦机制是导致所有这些问题的原因之一。当软键盘出现时,将导致listview中继,从而回收视图,从而丢失对editText的引用等。)
所以,最终,我的问题是,是否有任何方法,我可以可靠地模拟用户点击可见编辑文本,以便我可以触发一个软键盘,正常工作与“点击”的编辑文本?
我也尝试过以下方法,但它不可靠(有时起作用,有时不起作用。)玩延迟时间没有任何作用。)
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 focused,How 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
发布于 2013-09-18 05:01:20
对于我来说,有什么方法可以可靠地模拟用户点击可见编辑文本的过程吗?
这样我就可以触发一个软键盘,它可以正常地与“点击”的编辑文本一起工作吗?
是,
当您想要模拟您在EditText上的单击时添加此选项
editText.performClick(); //softkeyboard will open
editText.setPressed(true); // edittext will get highlighted
editText.invalidate(); //Invalidate the whole view
完成了!!
https://stackoverflow.com/questions/18864057
复制相似问题