>

드롭 다운 스피너를 전체 화면 (몰입 형 모드)으로 열려고하는데 드롭 다운이 열리면 맨 아래에 반투명 탐색 막대가 나타납니다. 옵션을 선택하면 탐색 모음이 숨겨 지지만 드롭 다운이 표시되는 한 계속 표시됩니다. show(FragmentManager manager, String tag) 이후 대화 조각 에서이 동작을 제거 할 수있었습니다.  재정의하고 추가하는 방법

getDialog().getWindow().getDecorView().setSystemUiVisibility(getActivity()
.getWindow().getDecorView().getSystemUiVisibility());
// Make the dialogs window focusable
 again.getDialog().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);

하지만 스피너에서 이와 유사한 방법은 없습니다. 이 방법을 performClick() 에 넣으려고했습니다.  부모의 청취자 구현을 사용하지만 여전히 운이 없습니다.

이 문제에 대한 해결책.


  • 답변 # 1

    이 코드를 사용해보십시오 :

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    
    

  • 답변 # 2

    자바 사용자의 경우이 정적 클래스를 생성

    import android.widget.ListPopupWindow;
    import android.widget.PopupWindow;
    import android.widget.Spinner;
    public static void avoidSpinnerDropdownFocus(Spinner spinner) {
        try {
            Field listPopupField = Spinner.class.getDeclaredField("mPopup");
            listPopupField.setAccessible(true);
            Object listPopup = listPopupField.get(spinner);
            if (listPopup instanceof ListPopupWindow) {
                Field popupField = ListPopupWindow.class.getDeclaredField("mPopup");
                popupField.setAccessible(true);
                Object popup = popupField.get((ListPopupWindow) listPopup);
                if (popup instanceof PopupWindow) {
                    ((PopupWindow) popup).setFocusable(false);
                }
            }
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }
    
    

    Kotlin 사용자는이 확장 기능을 사용하십시오

    import android.widget.ListPopupWindow
    import android.widget.PopupWindow
    import android.widget.Spinner
    fun Spinner.avoidDropdownFocus() {
    try {
        val listPopup = Spinner::class.java
                .getDeclaredField("mPopup")
                .apply { isAccessible = true }
                .get(this)
        if (listPopup is ListPopupWindow) {
            val popup = ListPopupWindow::class.java
                    .getDeclaredField("mPopup")
                    .apply { isAccessible = true }
                    .get(listPopup)
            if (popup is PopupWindow) {
                popup.isFocusable = false
            }
        }
    } catch (e: Exception) {
        e.printStackTrace()
    }
    }
    
    

    spinner 에서 해당 메소드를 호출해야합니다.  당신의 OnCreate 에서  방법 또는 언제 당신의 Spinner  부풀 리거나 사용하기 전에 언제든지

    spinner.avoidSpinnerDropdownFocus()
    
    

    kakajika GitHub 사용자 kakajika의 크레딧 https://gist.github.com/kakajika/a236ba721a5c0ad3c1446e16a7423a63

  • 이전 wpf - 사용 가능한 공간을 기준으로 요소 높이 설정
  • 다음 yii2 - 보기로 리디렉션하지 않고 모달 양식을로드하고 ajax를 통해 데이터 제출