Android 检测EditText上的触摸,但不中断它?
我需要知道用户何时触摸/轻触/单击我活动中的编辑文本 如何在不中断事件的情况下执行此操作,使键盘仍能正常显示Android 检测EditText上的触摸,但不中断它?,android,Android,我需要知道用户何时触摸/轻触/单击我活动中的编辑文本 如何在不中断事件的情况下执行此操作,使键盘仍能正常显示 (如果可能的话,我需要在操作系统显示键盘之前知道这一点)您应该能够通过在EditText中附加一个来实现这一点。如果您担心阻塞OnClickListener中的UI线程,您可以生成一个新线程并在其中执行您的工作-但是,如果您这样做,则无法保证在键盘显示之前完成工作。更不详细。 txtEdit.setOnTouchListener(new View.OnTouchListener(){
(如果可能的话,我需要在操作系统显示键盘之前知道这一点)您应该能够通过在EditText中附加一个来实现这一点。如果您担心阻塞OnClickListener中的UI线程,您可以生成一个新线程并在其中执行您的工作-但是,如果您这样做,则无法保证在键盘显示之前完成工作。更不详细。
txtEdit.setOnTouchListener(new View.OnTouchListener(){
public boolean onTouch(View view, MotionEvent motionEvent) {
// your code here....
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
return false;
}
});
同样的方法,但使用kotlin:
txtEdit.setOnTouchListener({ view, motionEvent ->
// your code here....
false
})
此行
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT\u输入状态始终可见)代码>是不必要的,因为当您点击editText视图时会显示键盘。OnTouchListener
为我调用了两次(在Pixel 2上运行饼图)。所以我用
OnFocusChangeListener
:
txtEdit.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
Log.d(TAG,"Focused Now!");
}
}
});
如果我连接了一个新的onFocusChangeListener,它会中断键盘,必须按两次才能显示它。当我重写时,有没有办法调用super或其他什么?也许我正在接近……好的。看看这个。。。事实上,这就是我所遵循的例子。我也尝试过获取“活动”窗口和setSoftInputMode,但总是需要轻敲两下才能显示键盘。谢谢,尽管我不需要“return false;”上面的行由于键盘自动出现。感谢您发布此问题的答案!在堆栈溢出时不鼓励只使用代码的答案,因为原始海报(或未来读者)可能很难理解它们背后的逻辑。请编辑您的问题并对代码进行解释,以便其他人可以从您的答案中获益。谢谢
txtEdit.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
Log.d(TAG,"Focused Now!");
}
}
});