首页 > 解决方案 > 按下微调器下拉菜单时,禁用全屏模式

问题描述

我正在将 Java 用于 android 项目,因为我必须在全屏模式下使用应用程序,当我按下下拉菜单(微调器)时,全屏模式被禁用。你有什么办法可以防止这种情况发生吗?即使我按下下拉菜单,我也不想退出全屏。我已经经历了所有的选择,包括

//method for full screen
private void hideSystemUI() {

    View decorView = getWindow().getDecorView();
    decorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_IMMERSIVE

                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_FULLSCREEN);
}

  ArrayAdapter<String> adapter = new ArrayAdapter<String>(Main_Menu.this,
                R.layout.custom_spinner, paths);

        adapter.setDropDownViewResource(R.layout.custom_spinner_drop_down_item);
        btnlanguage.setAdapter(adapter);


        btnlanguage.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {

                //   Toast.makeText(Main_Menu.this, urlinformation.HomeURL(btnlanguage.getSelectedItem().toString(), slug), Toast.LENGTH_LONG).show();
                mywebview.loadUrl(urlinformation.HomeURL(btnlanguage.getSelectedItem().toString(), slug));

            }

            @Override
            public void onNothingSelected(AdapterView<?> parentView) {

            }

        });

标签: javaandroidandroid-spinner

解决方案


这是解决方案,将此方法放入您的代码中,并在向微调器添加数据后调用 onCreate 方法。

   public static void apply(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();
    }
}

推荐阅读