在我的应用程序中隐藏 Android 默认键(Home、Back 和其他)

Hide Android Default key (Home,Back and the other) in my App

我有一个项目,我想在其中隐藏 Layouts FullScreen 或隐藏 Android Soft 键。 我通过像

这样的谷歌搜索尝试了解决方案
  1. Hide Action Bar
  2. SYSTEM_UI_FLAG_HIDE_NAVIGATION
  3. 同时测试应用中主题的变化Theme.AppCompat.Light.NoActionBar

我使用此代码禁用了 Back 密钥:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) 
{    
        if(keyCode == KeyEvent.KEYCODE_HOME)
        {
            Log.i("Home Button", "Clicked");
        }
        if(keyCode==KeyEvent.KEYCODE_BACK)
        {

            finish();
        }
        return false;
};

但我想禁用或隐藏所有软键。 请注意,我的应用程序将在其中运行的设备是 Lenovo Tab2 并且 Virtual Soft keys 像这样 Pic.

在 onCreate 方法中和 setContentView() 之后使用此代码。它帮助了我。

if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT )
        {
            getWindow().getDecorView().setSystemUiVisibility( 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 // hide nav bar
                    | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY );
        }

试试这个:

View.setSystemUiVisibility(
                  View.SYSTEM_UI_FLAG_LOW_PROFILE
                | View.SYSTEM_UI_FLAG_FULLSCREEN
                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

If you just need to hide the menu items just setVisible to false.Inside onCreateOptionsMenu say menu.findItem(R.id.action_back).setVisible(false); I have tried something similar in my app.This is the code I used inside my onCreateOptionsMenu.

 if (menu != null) {
        menu.findItem(R.id.action_register).setVisible(false);
        menu.findItem(R.id.action_search).setVisible(false);
        menu.findItem(R.id.action_settings).setVisible(false);
        menu.findItem(R.id.action_refresh).setVisible(false);
    }

您可能会发现,当 activity 失去焦点时,沉浸模式也会丢失。重新获得焦点后,它可能不会回到沉浸式模式。 为确保应用不会在焦点更改时失去沉浸式模式,请在 onWindowFocusChanged 方法中实施代码,而不是在 onCreate 方法中实施代码。

来源:https://developer.android.com/training/system-ui/immersive.html

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
    getWindow().getDecorView().setSystemUiVisibility(
            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
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);}
}