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的代碼。 有了這個,它只是放在彈出窗口。