code: public static void attach(final View panelLayout,
                                /* Nullable **/final View switchPanelKeyboardBtn,
                                /* Nullable **/final View focusView,
                                /* Nullable **/final SwitchClickListener switchClickListener) {
          final Activity activity = (Activity) panelLayout.getContext();
  
          if (switchPanelKeyboardBtn != null) {
              switchPanelKeyboardBtn.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View v) {
                      final boolean switchToPanel = switchPanelAndKeyboard(panelLayout, focusView);
                      if (switchClickListener != null) {
                          switchClickListener.onClickSwitch(v, switchToPanel);
                      }
                  }
              });
          }
  
          if (isHandleByPlaceholder(activity)) {
              focusView.setOnTouchListener(new View.OnTouchListener() {
                  @Override
                  public boolean onTouch(View v, MotionEvent event) {
                      if (event.getAction() == MotionEvent.ACTION_UP) {
                          /*
                           * Show the fake empty keyboard-same-height panel to fix the conflict when
                           * keyboard going to show.
                           * @see KPSwitchConflictUtil#showKeyboard(View, View)
                           */
                          panelLayout.setVisibility(View.INVISIBLE);
                      }
                      return false;
                  }
              });
          }
      }
docs: Attach the action of {@code switchPanelKeyboardBtn} and the {@code focusView} to
  non-layout-conflict.
  <p/>
  You do not have to use this method to attach non-layout-conflict, in other words, you can
  attach the action by yourself with invoke methods manually: {@link #showPanel(View)}、
  {@link #showKeyboard(View, View)}、{@link #hidePanelAndKeyboard(View)}, and in the case of
  don't invoke this method to attach, and if your activity with the fullscreen-theme, please
  ensure your panel layout is {@link View#INVISIBLE} before the keyboard is going to show.
  
  @param panelLayout            the layout of panel.
  @param switchPanelKeyboardBtn the view will be used to trigger switching between the panel
  and the keyboard.
  @param focusView              the view will be focused or lose the focus.
  @param switchClickListener    the click listener is used to listening the click event for
  {@code switchPanelKeyboardBtn}.
  @see #attach(View, View, SwitchClickListener, SubPanelAndTrigger...)