1

我正在创建一个自定义软键盘,并创建了一个PopupWindow以显示按键被长按的时间,例如当您长按E键时,它会显示E,É,È你选择一个。弹出窗口有一个关闭他的键,但我想删除此键并在用户正在触摸时使其显示,然后用户长按,拖动到他想要释放的键。如何在未触摸时使键盘的POPUP窗口关闭

我使用的是8

弹出以KeyboardView类创造了onLongPress方法Android的API。

final View custom = LayoutInflater.from(context) 
    .inflate(R.layout.popup_layout, new FrameLayout(context)); 
final PopupWindow popup = new PopupWindow(context); 

popup.setContentView(custom); 

     popup.setWidth(WindowManager.LayoutParams.WRAP_CONTENT); 
     popup.setHeight(WindowManager.LayoutParams.WRAP_CONTENT); 
     popup.showAtLocation(this, Gravity.NO_GRAVITY, popupKey.x, popupKey.y-50); 

用于关闭弹出按钮:

 buttonCancel.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       popup.dismiss(); 
      } 
     }); 

我认为可以使用的东西与onTouch方法,但如何识别释放的事件?并在哪里使用它?在keyboardView上,或者在弹出窗口中?

回答

0

我设法与要做到这一点:

@Override 
public boolean onTouchEvent(MotionEvent me){ 
    if(popup != null && me.getAction() == MotionEvent.ACTION_UP){ 
     popup.dismiss(); 
    } 
} 

我首先创建一个方法来显示在logcat的每一个触摸事件的代码,然后我得到的出现,当我离开触摸的代码,并与比较文档,它是MotionEvent.ADCTION_UP的代码。 有了这个,它只是放在弹出窗口。